可能重复:
如何验证数字输入 C++
您如何执行以下操作:
while (iNumberOfPlayers <2 || iNumberOfPlayers >5)
{
cout << "Enter number of players (1-4): ";
cin >> iNumberOfPlayers;
cin.clear();
std::string s;
cin >> s;
}
在查看了我被抛出的循环之后,只要我在循环中,它看起来cin
就不会被重置(如果我输入 x)cin
再次读取 X。while
猜测这是一个缓冲区问题,有什么办法可以清除它?
然后我尝试了:
while (iNumberOfPlayers <2 || iNumberOfPlayers >5)
{
cout << "Enter number of players (1-4): ";
cin >> iNumberOfPlayers;
cin.clear();
cin.ignore();
}
除了一次读取所有内容1之外,它有效。如果我输入“xyz”,那么循环会经过 3 次,然后再停止询问。