失败错误处理问题

cin.fail error handling issues

本文关键字:处理问题 错误 失败      更新时间:2023-10-16

我有一个小程序,我想评估输入。N 变量的输入只能是 1 到 2000 之间的数字。现在,如果我输入正确/不正确的数字,我编写的以下代码可以正常工作,但是当我输入一些随机字母时(我必须确保只有数字,所以如果有人输入字母,我必须处理),提示被写出与我输入的字母一样多的次数, 我只希望它被放出来一次。所以如果我写 34,它就可以了。如果我写3355453,输入会被检查,并提示用户再次尝试 1 到 2000 之间的数字。当我写一个字母"x"时,输入会被检查,并提示用户再次尝试使用 1 到 2000 之间的数字,但是如果我写更多的字母,例如 xxxx - 提示会出现 4 次而不是一次。如果我输入 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);

cin.ignore()替换为 cin.ignore(INT_MAX, 'n');