我是一个 C++ 初学者,我陷入了自我训练。
我想做一个猜数字游戏 - 基本上是相当简单的任务。
问题出现在
do..while
循环中。我想从用户那里读入一个数字,直到猜出正确的数字为止。当我启动程序时,它崩溃了,因为它总是循环 cout
和 cin
但它应该在 cin
处等待,直到有输入。为什么会出现这种情况?如果我只需尝试一次就可以执行一个程序,则程序会等待,直到有输入。
所以,我的想法是做一个
do..while
循环,因为我至少想经历一次。
我希望得到一些意见,以便我可以对这个问题进行更多研究。
在我的训练中,我做了:
#include <iostream>
using namespace std;
int main()
{
int eingabe = 0;
int randomZahl = 8;
bool checker = true;
cout << "Number Guesser\n\n";
do
{
if(eingabe != randomZahl)
{
cout << "Bitte gib eine Zahl ein: ";
cin >> eingabe;
}
if(eingabe == randomZahl)
{
checker = false;
}
}while(checker);
return 0;
}
这就是崩溃的样子:
如果他们没有输入有效的整数,
operator>>
会将 cin
置于您未清除的错误状态。这将导致 operator>>
停止等待后续输入,导致循环永远运行。
试试这个(如果德语错了,请原谅我,我使用谷歌翻译):
#include <iostream>
#include <limits>
using namespace std;
int main()
{
int eingabe, randomZahl = 8;
cout << "Number Guesser\n\n";
do
{
cout << "Bitte gib eine Zahl ein: ";
if (cin >> eingabe)
{
if (eingabe == randomZahl)
{
cout << "Du hast richtig geraten!\n";
break;
}
cout << "Du hast falsch geraten! Versuchen Sie es erneut.\n";
}
else
{
cin.clear();
cin.ignore(numeric_limits<streamsize>::max(), '\n');
cout << "Sie haben falsche Daten eingegeben! Versuchen Sie es erneut.\n";
}
}
while (true);
return 0;
}