我正在做一个银行系统项目,需要确保每个输入都是有效的(程序必须是健壮的)。如果输入无效,则用户必须重新输入。
但是当我有一个 int
类型的变量并且用户输入 char
类型时,一个无限循环开始了。
例如:
int i;
cin>>i;
如果用户输入 char
无限循环开始。我怎样才能避免它并再次要求用户输入?
谢谢
最佳答案
无限循环的原因:
cin 进入失败状态,这使得它忽略对它的进一步调用,直到错误标志和缓冲区被重置。
cin.clear();
cin.ignore(100, '\n'); //100 --> asks cin to discard 100 characters from the input stream.
检查输入是否为数字:
在您的代码中,即使是非 int 类型也会强制转换为 int。如果不将输入转换为字符数组并调用 isdigit(),就无法检查输入是否为数字。作用于每个数字。
函数 isdigit() 可用于区分数字和字母。此函数存在于 header 中。
一个 is_int() 函数看起来像这样。
for(int i=0; char[i]!='\0';i++){
if(!isdigit(str[i]))
return false;
}
return true;
关于c++ - 当输入 char 代替 int 时避免无限循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27190382/