Namespaces
Variants

operator<<,>> (std::complex)

From cppreference.net
헤더 파일에 정의됨 <complex>
template < class T, class CharT, class Traits >

std:: basic_ostream < CharT, Traits > &

operator << ( std:: basic_ostream < CharT, Traits > & os, const std:: complex < T > & x ) ;
(1)
template < class T, class CharT, class Traits >

std:: basic_istream < CharT, Traits > &

operator >> ( std:: basic_istream < CharT, Traits > & is, std:: complex < T > & x ) ;
(2)
1) 복소수를 os ( real, imaginary ) 형태로 기록합니다.
2) 복소수를 is 에서 읽어들입니다. 지원되는 형식은 다음과 같습니다:
  • real
  • ( real )
  • ( real, imaginary )

여기서 real imaginary 의 입력은 T 로 변환 가능해야 합니다.

오류가 발생하면 is. setstate ( ios_base :: failbit ) 를 호출합니다.

목차

예외

스트림 오류 발생 시 std::ios_base::failure 를 throw할 수 있습니다.

매개변수

os - 문자 출력 스트림
is - 문자 입력 스트림
x - 삽입되거나 추출될 복소수

반환값

1) os
2) is

참고 사항

1) 현재 로캘에서 쉼표가 소수점 구분자로 사용될 수 있으므로, 출력이 모호해질 수 있습니다. 이는 std::showpoint 를 사용하여 소수점 구분자가 항상 표시되도록 강제함으로써 해결할 수 있습니다.
2) 입력은 일련의 단순한 형식화된 추출로 수행됩니다. 각각에 대한 공백 건너뛰기는 동일합니다.

가능한 구현

template<class T, class CharT, class Traits>
basic_ostream<CharT, Traits>&
    operator<<(basic_ostream<CharT, Traits>& o, const complex<T>& x)
{
    basic_ostringstream<CharT, Traits> s;
    s.flags(o.flags());
    s.imbue(o.getloc());
    s.precision(o.precision());
    s << '(' << x.real() << ',' << x.imag() << ')';
    return o << s.str();
}

예제

#include <complex>
#include <iostream>
int main()
{
    std::cout << std::complex<double> {3.14, 2.71} << '\n';
}

가능한 출력:

(3.14,2.71)