使用c++验证数字
Validating a number using c++
我正在尝试验证用户输入的整数(getUserInteger(。当输入的值不是整数时,while循环应该清除缓冲区,重置缓冲区的错误状态,打印";输入错误,请重试:";然后要一个新号码。
在要求新号码之前,一切似乎都很顺利"cin>gt;数字";whithin循环从不缝合"hit",并继续在循环中迭代;错误的条目&";。我一辈子都弄不明白为什么。谢谢你的帮助!
#include <iostream>
#include <string>
#include <limits>
using namespace std;
// ----- Prototypes -----
int getUserInteger();
// ----- Main -----
int main (){
int userNumber;
userNumber = getUserInteger();
}
// ----- Functions -----
int getUserInteger() {
int number;
cin >> number;
while ( cin.fail() ) { // read failed, not int?
cin.ignore(numeric_limits<streamsize>::max(), 'n'); //clear buffer through 'enter'
cin.clear(); // reset error buffer
cout << "bad entry, try again: " << endl;
cin >> number;
}
return number;
}
cin.ignore
应位于cin.clear
之后。
错误:
cin.ignore(numeric_limits<streamsize>::max(), 'n'); //clear buffer through 'enter'
cin.clear(); // reset error buffer
固定:
cin.clear(); // reset error buffer
cin.ignore(numeric_limits<streamsize>::max(), 'n'); //clear buffer through 'enter'
_cin.ignore应位于cin.clear.之后
#错误:
cin.ignore(numeric_limits<streamsize>::max(), 'n'); //clear buffer through 'enter'
cin.clear(); // reset error buffer
固定:
cin.clear(); // reset error buffer
cin.ignore(numeric_limits<streamsize>::max(), 'n'); //clear buffer through 'enter'
相关文章:
- 输入验证将数字放入向量中
- 输入验证以仅接受数字
- 如何验证输入仅是数字数字
- 验证每个数字是否在特定条件下
- 如何在算术进程中验证是否从文件中验证数字
- C++数字输入的输入验证
- 输入验证,需要数字,而不是字符串.代码导致无限循环
- 验证用户输入是5位数字
- 正在验证用户输入的数字
- 通过数字和冒号验证字符串
- 验证代码以检查数字是否为回文
- 验证字符串是否为全数字
- 验证数字是否为斐波那契
- 如何验证字符串是否为数字和/或允许一个字符"."
- 是否可以验证预处理器宏以确保它是一个数字?
- 数字输入的输入验证
- 验证system32/drivers文件夹中的数字签名
- 如何验证QlineEdit以便只允许写入字符串或只允许写入数字
- 带数字和字符串的输入验证
- C++中的数字数据验证