你好,我想检查我的程序,如果用户输入的不是数字,而不是输入数字。
所以我做了这个功能
void ValidationController::cinError(int *variable){
if(!isdigit(*variable)){
cin.clear();
cin.ignore(256, '\n');
cout <<*variable<<endl;
*variable=0;
cout <<*variable<<endl;
}
}
我这样调用函数:
int more;
cin >>more;
cinError(&more);
所以我的问题是,每次我给出一个数字时,它的行为就像我没有给出一样。它进入 if 并使变量等于零。我在这里缺少什么?
最佳答案
撇开您错误地使用 isdigit
这一事实不谈,检查 isdigit
已经太晚了,因为您正在读取 int
.在这种情况下,查找数字的是流的 >>>
运算符,而不是您的代码。
如果要验证用户输入,将数据读入字符串
,然后在其组件上使用isdigit
,如下所示:
string numString;
getline(cin, numString);
for (int i = 0 ; i != numString.length() ; i++) {
if (!isdigit((unsigned char)numString[i])) {
cerr << "You entered a non-digit in a number: " << numString[i] << endl;
}
}
// Convert your validated string to `int`
关于c++ - isdigit() 总是通过检查,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19186137/