operator<<,>>(std::complex)
來自 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
- (實部)
- (實部, 虛部)
其中 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(); } |
[編輯] 示例
執行此程式碼
#include <complex> #include <iostream> int main() { std::cout << std::complex<double> {3.14, 2.71} << '\n'; }
可能的輸出
(3.14,2.71)