operator<<,>>(std::complex)
Von cppreference.com
| Definiert in der Header-Datei <complex> |
||
| template< class T, class CharT, class Traits > std::basic_ostream<CharT, Traits>& |
(1) | |
| template< class T, class CharT, class Traits > std::basic_istream<CharT, Traits>& |
(2) | |
1) Schreibt die komplexe Zahl im Format (real, imaginary) nach os.
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.
Wenn ein Fehler auftritt, wird is.setstate(ios_base::failbit) aufgerufen.Inhalt |
[bearbeiten] Ausnahmen
Kann std::ios_base::failure bei Stream-Fehlern auslösen.
[bearbeiten] Parameter
| os | - | ein Zeichen-Ausgabestrom |
| ist | - | ein Zeileneingabestrom |
| x | - | die einzufügende oder zu extrahierende komplexe Zahl |
[bearbeiten] Rückgabewert
1) os
2) is
[bearbeiten] Hinweise
1) Da das Komma im aktuellen Gebietsschema als Dezimaltrennzeichen verwendet werden kann, kann die Ausgabe mehrdeutig sein. Dies kann mit std::showpoint gelöst werden, das erzwingt, dass das Dezimaltrennzeichen sichtbar ist.
2) Die Eingabe erfolgt als eine Reihe von einfachen formatierten Extraktionen. Das Überspringen von Leerzeichen ist für jede davon gleich.
[bearbeiten] 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(); } |
[bearbeiten] Beispiel
Führen Sie diesen Code aus
#include <complex> #include <iostream> int main() { std::cout << std::complex<double> {3.14, 2.71} << '\n'; }
Mögliche Ausgabe
(3.14,2.71)