operator<<,>>(std::complex)
提供: cppreference.com
ヘッダ <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) 複素数を 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) os
2) 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(); } |