【发布时间】:2014-11-29 00:43:46
【问题描述】:
我只是想编写一个从 cin 读取的简单程序,然后验证输入是否为整数。如果是这样,我将跳出我的 while 循环。如果没有,我会再次要求用户输入。
我的程序编译和运行都很好,这很棒。但如果我输入非数值,它不会提示输入新的输入。什么给了?
#include <iostream>
using namespace std;
int main() {
bool flag = true;
int input;
while(flag){
try{
cout << "Please enter an integral value \n";
cin >> input;
if (!( input % 1 ) || input == 0){ break; }
}
catch (exception& e)
{ cout << "Please enter an integral value";
flag = true;}
}
cout << input;
return 0;
}
【问题讨论】:
-
标准流默认不会在失败时抛出异常。
-
检查
std::basic_ios::exceptions,如果您想针对特定流失败抛出异常。 -
if (!( input % 1 ) || input == 0){ break; }只是写break;的路很长
标签: c++ visual-studio-2012 error-handling