1
我有一个小程序,我想评估输入。 N变量的输入只能是1到2000之间的一个数字。现在,如果我输入正确/不正确的数字,我写的下面的代码工作正常,但是当我输入一些随机字母时(我必须确保只有数字,所以我必须处理,如果有人放入信件),提示会写出尽可能多的信件,我已经放入,我只希望它被放出一次。所以,如果我写34,它的作品。如果我编写3355453,则会检查输入,并提示用户再次尝试使用1到2000之间的数字。当我写入字母'x'时,会检查输入并提示用户再次尝试输入数字再次介于1到2000之间,但如果我编写更多字母(例如xxxx),则提示会出现4次而不是1次。如果我输入7个字母,propt出现7次。任何方式来解决这个问题?谢谢!cin.fail错误处理问题
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);
什么样的魔力,这是? :D谢谢,这究竟做了什么?除了工作:D – 2014-12-02 22:06:06
请看看文档http://www.cplusplus.com/reference/istream/istream/ignore/。默认情况下,忽略调用忽略* one *字符或直到它遇到EOF,在我们的情况下,我们将忽略尽可能多的字符(MAX_INT足够大),直到我们遇到/到达行尾符号('\ n')由用户输入。 – 2014-12-02 22:09:41