Namespaces
Variants

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

From cppreference.net
ヘッダーで定義 <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) 複素数を形式 ( real, imaginary ) os に書き込みます。
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();
}
**注記**: 提供されたテキストはすべてC++コード(`
`タグ内)であり、HTMLタグと属性、およびC++固有の用語は翻訳対象外のため、翻訳すべきテキストは存在しません。上記は元のコンテンツをそのまま保持しています。

#include <complex>
#include <iostream>
int main()
{
    std::cout << std::complex<double> {3.14, 2.71} << '\n';
}

出力例:

(3.14,2.71)