operator<<,>>(std::complex)
From 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 へ複素数を (実部, 虚部) の形式で書き込みます。
2) is から複素数を読み込みます。サポートされている形式は以下の通りです。
- real
- (実部)
- (実部, 虚部)
実部 と 虚部 の入力は 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(); } |
[編集] 例
このコードを実行
#include <complex> #include <iostream> int main() { std::cout << std::complex<double> {3.14, 2.71} << '\n'; }
実行結果の例
(3.14,2.71)