如何在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;
}