首页 > 解决方案 > 如何在 C++ 中打印复数

问题描述

我正在玩 C++ 中的类。目前我正在研究一个复数类,并希望能够以以下格式打印它们:-2+3i, 1-4i. 这意味着,如果它是负数,我希望实部只有一个符号。相反,无论是正数还是负数,虚部都应该有一个符号。

我尝试了以下没有按预期工作:

inline void Complex::print() const {
    std::cout << x;
    std::cout << std::showpos << y << "i" << std::endl;
}

如果符号为正,则此方法还为实部打印符号。为什么会std::showpos影响第一行?

有没有更好的方法来做到这一点?

标签: c++

解决方案


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;
}

推荐阅读