我想创建一个程序,它接收来自用户的整数输入,然后在用户根本不输入任何内容时终止(即,只需按 Enter 键)。但是,我在验证输入时遇到了问题(确保用户输入的是整数,而不是字符串。atoi() 不起作用,因为整数输入可以超过一位。
验证此输入的最佳方法是什么?我尝试了类似以下的方法,但我不确定如何完成它:
char input
while( cin>>input != '\n')
{
//some way to check if input is a valid number
while(!inputIsNumeric)
{
cin>>input;
}
}
最佳答案
当 cin
得到不能使用的输入时,它设置 failbit
:
int n;
cin >> n;
if(!cin) // or if(cin.fail())
{
// user didn't input a number
cin.clear(); // reset failbit
cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n'); //skip bad input
// next, request user reinput
}
当cin
的failbit
被设置时,使用cin.clear()
重置流的状态,然后 cin.ignore()
删除剩余的输入,然后请求用户重新输入。只要设置了失败状态并且流包含错误输入,流就会出现异常。
关于c++ - 如何在 C++ 中检查输入是否为数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5655142/