operator<<,>>(std::complex)
From cppreference.com
                    
                                        
                    
                    
                                                            
                    | Defined in header  <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) Writes to os the complex number in the form (real,imaginary).
2) Reads a complex number from is. The supported formats are 
- real
- (real)
- (real,imaginary)
Where the input for real and imaginary must be convertible to T.
If an error occurs calls is.setstate(ios_base::failbit)| Contents | 
[edit] Exceptions
May throw std::ios_base::failure on stream errors.
[edit] Parameters
| os | - | a character output stream | 
| is | - | a character input stream | 
| x | - | the complex number to be inserted or extracted | 
[edit] Return value
1) os
2) is
[edit] Notes
1) As the comma may be used in the current locale as decimal separator, the output may be ambiguous. This can be solved with std::showpoint which forces the decimal separator to be visible.
2) The input is performed as a series of simple formatted extractions. Whitespace skipping is the same for each of them.
[edit] Possible implementation
| 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(); } | 


