名前空間
変種

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) 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();
}
Morty Proxy This is a proxified and sanitized view of the page, visit original site.