cin.fail错误处理问题

时间:2014-12-02 21:23:20

标签: c++ cin

我有一个小程序,我想评估输入。 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);

1 个答案:

答案 0 :(得分:1)

替换cin.ignore() w / cin.ignore(INT_MAX, '\n');