名前空間
変種
操作

operator<<,>>(std::complex)

From cppreference.com
< cpp‎ | numeric‎ | complex
 
 
 
 
ヘッダ <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 へ複素数を (実部, 虚部) の形式で書き込みます。
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)
English 日本語 中文(简体) 中文(繁體)