operator<<,>>(std::complex)
来自 cppreference.cn
定义于头文件 <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)