我正在研究 C++ 中的类。目前我正在研究一个复数类,并希望能够以下列格式打印它们:-2+3i
、1-4i
。这意味着,如果实部为负,我希望它只有一个符号。相反,无论是正数还是负数,虚部都应该始终有一个符号。
我尝试了以下方法,但没有按预期工作:
inline void Complex::print() const {
std::cout << x;
std::cout << std::showpos << y << "i" << std::endl;
}
如果正数,此方法还打印实数部分的符号。为什么 std::showpos
会影响第一行?
有更好的方法吗?
最佳答案
showpos
是“粘性的”,适用于后面的每个数字,直到它被 noshowpos
改回。
您可以将 showpos
与本地流一起使用,以避免弄乱 std::cout
:
inline void Complex::print() const {
std::ostringstream y_stream;
y_stream << showpos << y;
std::cout << x
<< y_stream.str() << 'i'
<< std::endl;
}
关于c++ - 如何在 C++ 中打印复数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58488341/