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) 以 (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();} |
[编辑]示例
运行此代码
#include <complex>#include <iostream> int main(){std::cout<<std::complex<double>{3.14, 2.71}<<'\n';}
可能的输出:
(3.14,2.71)