Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/140.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在C++中打印复数 我正在玩C++中的类。目前我正在学习一个复数类,希望能够以以下格式打印它们:-2+3i,1-4i。这意味着,我希望真实部分只有一个符号,如果它是负的。相反,无论是正的还是负的,虚部都应该有一个符号_C++ - Fatal编程技术网

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

如何在C++中打印复数 我正在玩C++中的类。目前我正在学习一个复数类,希望能够以以下格式打印它们:-2+3i,1-4i。这意味着,我希望真实部分只有一个符号,如果它是负的。相反,无论是正的还是负的,虚部都应该有一个符号,c++,C++,我尝试了以下方法,但没有达到预期效果: inline void Complex::print() const { std::cout << x; std::cout << std::showpos << y << "i" << std::endl; } 如果符号为正,此方法也会为实部打印符号。为什么std::showpos会影响第一行 有更好的方法吗?这是因为std::showpos标志会影响插入流中的每个数字 你试过

我尝试了以下方法,但没有达到预期效果:

inline void Complex::print() const {
    std::cout << x;
    std::cout << std::showpos << y << "i" << std::endl;
}
如果符号为正,此方法也会为实部打印符号。为什么std::showpos会影响第一行

有更好的方法吗?

这是因为std::showpos标志会影响插入流中的每个数字

你试过使用if语句吗

if (x > 0)
{
    std::cout << "+";
}
这是因为std::showpos标志会影响插入流中的每个数字

你试过使用if语句吗

if (x > 0)
{
    std::cout << "+";
}
showpos是粘性的,并且应用于下面的每个数字,直到它被noshowpos更改回来

您可以将showpos与本地流一起使用,以避免与std::cout混淆:

showpos是粘性的,并且应用于下面的每个数字,直到它被noshowpos更改回来

您可以将showpos与本地流一起使用,以避免与std::cout混淆:

如果从不使用std::noshowpos,std::cout将保留showpos标志,以便下次调用print时,它将影响程序中使用std::cout打印的x和任何其他数字

因此,在打印y:

如果从不使用std::noshowpos,std::cout将保留showpos标志,以便下次调用print时,它将影响程序中使用std::cout打印的x和任何其他数字

因此,在打印y:


设置showpos格式标志时,插入到流中的每个非负数值(包括零)前面都有一个加号+。可以使用noshowpos操纵器取消设置此标志

代码中的微小更改:

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

设置showpos格式标志时,插入到流中的每个非负数值(包括零)前面都有一个加号+。可以使用noshowpos操纵器取消设置此标志

代码中的微小更改:

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

使用几个if语句。如果real<0等。旁注:与其调用组件x和y,不如将它们称为真实和虚构的组件,特别是因为这是您在说话时所做的。我假设您这样做是为了练习,或者由于缺少所需的功能,如果不值得注意的话,是存在的。顺便说一句,已经有了。我建议更改标题。问题似乎在于打印符号,而不是复杂的数字。如果是后者,那么使用std::complex将是一个不错的选择,而当前的标题肯定会吸引寻求如何打印std::complex的用户使用几个If语句。如果real<0等。旁注:与其调用组件x和y,不如将它们称为真实和虚构的组件,特别是因为这是您在说话时所做的。我假设您这样做是为了练习,或者由于缺少所需的功能,如果不值得注意的话,是存在的。顺便说一句,已经有了。我建议更改标题。问题似乎在于打印符号,而不是复杂的数字。如果是后者,使用std::complex将是一个不错的选择,而当前的标题肯定会吸引寻求如何打印std::complex的用户,但这种方法会打印,例如,1-2i,如果虚部是负数,对吗?@Samuel是的,我太快了,虽然太少。但是这种方法打印,例如,1-2i如果虚部是负数,对吗?@Samuel是的,我太快了,虽然太小了。
inline void Complex::print() const {
    std::cout << std::noshowpos << x;
    std::cout << std::showpos << y << "i" << std::endl;
}