C++ 如何让它读两遍?

C++ 如何让它读两遍?,c++,cin,C++,Cin,我有一段代码: ... 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 &

我有一段代码:

... 
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;
...
非常感谢你


因为我是论坛的新手,我不知道如何给一个次级评论打分;如果我只给这篇文章的一个官方回复打绿色支票可以吗?

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

cin.clear();
我还记得我做了一些类似的事情:

cin.ignore(cin.rdbuf()->in_avail());
更多信息请参见本帖:


我打赌您没有从输入流中读取I字符

可能与您在键盘上键入的内容完全相同(包括返回键和您按下的任何控制键)。测试时,您是如何定义COmplexNumberDo的运算符>>?我输入:5+9i[enter]它按照我的打印方法的预期读回C1,然后只运行其余的输出。看起来不错。但是我打赌你没有从输入流中读取
I
字符!但是,除非您为您的操作员显示代码>>,否则无法给您一个真实的答案;我确实读过那篇文章,但我不知道该把它放在我的代码中的什么地方。我试过了,你应该在读了第一个cin之后,或者在读了第二个cin之前就做。它正在清除缓冲区,这样cin就不会从上一个输入中读取输入(enter),从而允许您提供第二个输入。在读取第一个cin后,我添加了第一个,然后泰勒建议的两行(以及之前尝试的“刷新cin缓冲区”问题的其他建议)并重新编译,但代码的行为仍然相同。我很困惑。
cin.ignore(cin.rdbuf()->in_avail());