【发布时间】:2019-10-21 14:23:02
【问题描述】:
我正在玩 C++ 中的类。目前我正在研究一个复数类,并希望能够以以下格式打印它们:-2+3i,1-4i。这意味着,如果它是负数,我希望实部只有一个符号。相反,无论是正数还是负数,虚部都应该有一个符号。
我尝试了以下方法,但没有按预期工作:
inline void Complex::print() const {
std::cout << x;
std::cout << std::showpos << y << "i" << std::endl;
}
如果符号为正,此方法也会为实部打印符号。为什么std::showpos会影响第一行?
有没有更好的方法来做到这一点?
【问题讨论】:
-
使用几个 if 语句。
if (real < 0)等旁注:与其调用组件x和y,不如将它们称为real和imaginary更有意义,特别是因为这就是你在说话时所做的 -
我假设您这样做是为了锻炼或由于缺乏所需的功能,如果不是,请注意 std::complex 存在。
-
顺便说一句,已经有一个standard library for complex numbers。
-
我建议更改标题。问题似乎是关于打印符号而不是复数。如果是后者,则使用
std::complex将是可行的方法,并且当前的标题肯定会吸引寻求如何打印std::complex的用户
标签: c++