kyr*_*pav 4 c++ eclipse optimization pointers
你好我想检查我的程序是否用户而不是输入数字,如果他输入的数字不是数字.
所以我做了这个功能
void ValidationController::cinError(int *variable){
if(!isdigit(*variable)){
cin.clear();
cin.ignore(256, '\n');
cout <<*variable<<endl;
*variable=0;
cout <<*variable<<endl;
}
}
Run Code Online (Sandbox Code Playgroud)
我这样称呼函数:
int more;
cin >>more;
cinError(&more);
Run Code Online (Sandbox Code Playgroud)
所以我的问题是每次我给一个数字它就像我没有.它进入内部如果并使变量等于零.我在这里缺少什么?
撇开你使用isdigit不当的事实,isdigit无论如何都要检查,因为你正在阅读int.在这种情况下,流的>>运算符会查找数字,而不是代码.
如果要验证用户输入,请将数据读入a string,然后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`
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
800 次 |
| 最近记录: |