我想创建一个程序,该程序接受用户的整数输入,然后在用户根本不输入任何内容时终止(即,只需按 Enter 键)。但是,我在验证输入时遇到了麻烦(确保用户输入的是整数,而不是字符串。atoi() 不起作用,因为整数输入可以超过一位。
验证此输入的最佳方法是什么?我尝试了类似以下的方法,但我不确定如何完成它:
char input
while( cin>>input != '\n')
{
//some way to check if input is a valid number
while(!inputIsNumeric)
{
cin>>input;
}
}
原文由 chimeracoder 发布,翻译遵循 CC BY-SA 4.0 许可协议
当
cin
获得无法使用的输入时,它会设置failbit
:When
cin
’sfailbit
is set, usecin.clear()
to reset the state of the stream, thencin.ignore()
to expunge the remaining input,然后要求用户重新输入。只要设置了故障状态并且流包含错误输入,流就会出现异常。