gpt4 book ai didi

c++ - 重载的流提取操作符

转载 作者:行者123 更新时间:2023-11-28 07:46:40 25 4
gpt4 key购买 nike

我正在尝试输入复数并使用重载运算符来处理解析实部和虚部。如果我输入像 1 + 2i 这样的数字,我希望 real = 1imaginary = 2

现在如果我输入 1 + 2i 输入,输出是 1 + 0i。我怎样才能正确地做到这一点(Number 有私有(private)数据成员 realimaginary 并且 operator>> 是一个友元函数)

//input the form of 1 + 2i
istream & operator>>(istream &in, Number &value)
{
in >> std::setw(1) >> value.real;
in.ignore(3); //skip 'space' and '+' and 'space'
in >> std::setw(1) >> value.imaginary;
in.ignore(); //skip 'i'

return in;
}


//output in the for 1 + 2i
ostream &
operator<<(ostream &out, const Complex &value)
{
out << value.real << " + " << value.imaginary << "i" <<std::endl;

return out;
}

最佳答案

您的代码在我的编译器上运行得很好!也许问题出在其他地方(例如在输出中)?

请注意,std::setw 在从输入流中提取数字时无效。

请记住,您可能还想考虑以下形式的情况:A - Bi 并且可能如果用户决定在运算符或 i 周围插入额外或删除空格>。但对于简单的情况 A + Bi,您的原型(prototype)应该不是问题。

关于c++ - 重载的流提取操作符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14790263/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com