operator<<,>>(std::complex)
提供: cppreference.com
<tbody>
</tbody>
| ヘッダ <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 が投げられる場合があります。
引数
| os | - | 文字出力ストリーム |
| is | - | 文字入力ストリーム |
| x | - | 挿入または抽出する複素数 |
戻り値
1)
os2)
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();
}
|