名稱空間
變體
操作

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

來自 cppreference.com
< cpp‎ | 數值‎ | 複數
 
 
 
 
定義於標頭檔案 <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
  • (實部)
  • (實部, 虛部)

其中 realimaginary 的輸入必須可轉換為 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)