如何检查输入是否是C中的数字

新手上路,请多包涵

我想创建一个程序,该程序接受用户的整数输入,然后在用户根本不输入任何内容时终止(即,只需按 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 许可协议

阅读 395
2 个回答

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
}

When cin ’s failbit is set, use cin.clear() to reset the state of the stream, then cin.ignore() to expunge the remaining input,然后要求用户重新输入。只要设置了故障状态并且流包含错误输入,流就会出现异常。

原文由 greyfade 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题