我有一个小程序,我想评估输入。 N变量的输入应该只是1到2000之间的数字。现在,如果我输入正确/错误的数字,我编写的下面的代码工作正常,但是当我输入一些随机字母时(我必须确保这是唯一的数字,所以如果有人写信,我必须处理,提示会写出我已经输入的信件的次数,而且我只希望它被输出一次。所以,如果我写34,它就有效。如果我写3355453,则会检查输入并提示用户再次尝试1到2000之间的数字。当我写一封信' x'时,输入会被检查并提示用户再次使用1到2000之间的数字再次尝试,但如果我写了更多的字母,例如xxxx - 提示出现4次而不是1次。如果我输入7个字母,该支柱出现7次。有办法解决这个问题吗?谢谢!
do {
cout << "Please put in a number between 1 and 2000." << endl;
cin >> N;
if(cin.fail() || N<1 || N>2000){
cin.clear();
cin.ignore();
}
} while(cin.fail() || N<1 || N>2000);
答案 0 :(得分:1)
替换cin.ignore()
w / cin.ignore(INT_MAX, '\n');