gpt4 book ai didi

c++ - isdigit() 总是通过检查

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:14:37 29 4
gpt4 key购买 nike

你好,我想检查我的程序,如果用户输入的不是数字,而不是输入数字。

所以我做了这个功能

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/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com