我有这段代码:
...
ComplexNumber C1;
ComplexNumber C2;
cout << "Enter a complex number C1:" << endl;
cin >> C1;
cout << C1 << endl;
cout << "Enter a complex number C2:" << endl;
cin >> C2;
cout << C2 << endl;
...
但正如我发现的那样,它不会第二次等待用户输入,只会将 C2 保留为我为 ComplexNumber 类中的零参数构造函数定义的默认值,然后继续。
我发现这个问题的所有解决方案都使用 getline() 而不是 cin >> ,但这个任务是为了测试我们为 ComplexNumber 类重载运算符 >> 的效果如何,所以我认为使用 getline 会破坏这个目的. 还有另一种方法可以使这项工作吗?
编辑:@Martin 你是对的!在我将 operator>> 更改为:
istream & operator>>(istream & in, ComplexNumber & n)
{
int inreal=0;
int inimag=0;
in >> inreal;
char plus;
in.get(plus); // read the plus sign since it's a char
in >> inimag;
char i; // DID NOT HAVE THIS LINE AT FIRST
in.get(i); // DID NOT HAVE THIS LINE AT FIRST
n = ComplexNumber(inreal,inimag);
return in;
}
非常感谢!
由于我是论坛的新手,我不知道如何评价子评论;如果我只给这个帖子的一个官方回复打绿色支票可以吗?