gpt4 book ai didi

c++ - 如何让它读cin两次?

转载 作者:太空狗 更新时间:2023-10-29 21:29:01 24 4
gpt4 key购买 nike

我有这段代码:

... 
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;
}

非常感谢!

因为我是论坛的新手,所以我不知道如何给子评论打分;如果我只给这篇帖子的一个官方回复打绿色勾可以吗?

最佳答案

你需要清除cin。它正在读取上一个 cin 的“输入”。

cin.clear();

我还记得我做过一些类似的事情:

cin.ignore(cin.rdbuf()->in_avail());

这篇文章中的更多信息:

How do I flush the cin buffer?

关于c++ - 如何让它读cin两次?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5737805/

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