失败错误处理问题
cin.fail error handling issues
我有一个小程序,我想评估输入。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');
相关文章:
- 警告处理为错误这里有什么问题
- 在c++中实现LinkedList时,应出现未处理的错误
- posix_spawn():使用posix_scawn()时的错误处理问题
- 当我使用 C++ 中的 C# dll 来使用 Selenium 时,存在异常处理问题
- VisualC++ 2010 有没有办法找出有关未处理异常错误的更多详细信息
- 谷歌启动B轮巴士路线问题错误的答案?
- C++编译问题错误 - C2332:<类:缺少标记名称>
- 编译方面的问题.错误E0413、E0434、C2664、C2440
- 使用C++处理火狐错误消息"无法加载XPCOM"
- 在运行时处理 OpenGL 错误
- 为什么 catch 不处理此错误C++
- C++ main() 末尾关于错误处理的错误
- 在C 中的初学者,我面临此问题错误C3867
- C++:创建线程时出现问题;错误 C2672:"std::invoke":找不到匹配的重载函数
- 如何正确处理OpenSSL错误(BIO)
- 我应该如何处理:错误 C2039 "分配":不是 Visual Studio 2017 中"cl::string"的成员?
- 模板方法定义的问题 - 错误C2244:无法将函数定义与现有声明匹配
- C 继承问题错误C2084功能已经具有主体
- 安装 QT 后的新手问题 - 错误:未知类型名称"QApplication"
- 失败错误处理问题