Espacios de nombres
Variantes
Acciones

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

De cppreference.com
< cpp‎ | numeric‎ | complex
 
 
 
std::complex
Funciones miembro
Funciones no miembro
Funciones exponenciales
Funciones de potencias
Funciones trigonométricas
(C++11)
(C++11)
(C++11)
Funciones hiperbólicas
(C++11)
(C++11)
(C++11)
 
Definido en el archivo de encabezado <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) Escribe en os el número complejo en la forma (real,imaginary).
2) Lee un número complejo de is. Los formatos admitidos son
  • real;
  • (real);
  • (real,imaginary).

Donde la entrada para real y imaginary debe ser convertible a T.

Si ocurre un error, llama a is.setstate(ios_base::failbit)

Contenido

[editar] Excepciones

Puede lanzar std::ios_base::failure cuando ocurren errores en el flujo.

[editar] Parámetros

os - Un flujo de salida de caracteres.
is - Un flujo de entrada de caracteres.
x - El número complejo que se va a insertar o extraer.

[editar] Valor de retorno

1) os.
2) is.

[editar] Notas

1) Como la coma puede usarse en la configuración regional actual como separador decimal, la salida puede ser ambigua. Esto se puede resolver con std::showpoint que obliga a que el separador decimal sea visible.
2) La entrada se realiza como una serie de extracciones formateadas simples. La omisión de espacios en blanco es la misma para cada una de ellas.

[editar] Posible implementación

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();
}