Namespaces
Variants

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

From cppreference.net
Definiert im Header <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) Schreibt in os die komplexe Zahl in der Form ( real, imaginary ) .
2) Liest eine komplexe Zahl aus is . Die unterstützten Formate sind
  • real
  • ( real )
  • ( real, imaginary )

wobei die Eingabe für real und imaginary in T konvertierbar sein muss.

Falls ein Fehler auftritt, ruft is. setstate ( ios_base :: failbit ) auf.

Inhaltsverzeichnis

Ausnahmen

Kann bei Stream-Fehlern std::ios_base::failure werfen.

Parameter

os - ein Zeichenausgabestrom
is - ein Zeicheneingabestrom
x - die einzufügende oder zu extrahierende komplexe Zahl

Rückgabewert

1) os
2) is

Hinweise

1) Da das Komma im aktuellen Gebietsschema als Dezimaltrennzeichen verwendet werden kann, könnte die Ausgabe mehrdeutig sein. Dies kann mit std::showpoint gelöst werden, was die Sichtbarkeit des Dezimaltrennzeichens erzwingt.
2) Die Eingabe erfolgt als eine Reihe von einfach formatierten Extraktionen. Das Überspringen von Leerzeichen ist für jede von ihnen gleich.

Mögliche Implementierung

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();
}
*Anmerkung: Da der gesamte Inhalt innerhalb von `
`-Tags liegt und C++-spezifische Begriffe enthält, wurde gemäß den Anweisungen keine Übersetzung vorgenommen. Die HTML-Struktur und der Code bleiben vollständig unverändert.*

Beispiel

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

Mögliche Ausgabe:

(3.14,2.71)