c++ - 如何在 C++ 中检查输入是否为数字

标签 c++

我想创建一个程序,它接收来自用户的整数输入,然后在用户根本不输入任何内容时终止(即,只需按 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
}

cinfailbit被设置时,使用cin.clear()重置流的状态,然后 cin.ignore()删除剩余的输入,然后请求用户重新输入。只要设置了失败状态并且流包含错误输入,流就会出现异常。

关于c++ - 如何在 C++ 中检查输入是否为数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5655142/

相关文章:

c++ - 使用路径中的空格从 C++ 执行批处理文件

适用于奇怪目标平台的 C++ 代码覆盖工具

c++ - 如何防止模板化别名的隐式保值转换?

c++ - 复制省略返回值和 noexcept

c++ - Boost.Regex 联动错误 LUbuntu 14.04 g++ 4.8.2

c++ - 在 CLion 控制台中重复用户输入

c++ - 使用 Qt Creator 读取 rosbag 文件时出错

c++ - 什么是 C++ GUI 库支持 Windows 的 32 位字符 Unicode

用于读取写入数组的 csv 的 C++ 程序;然后操作并打印到文本文件中(已经用 matlab 编写)

c++ - 类无法与不在其命名空间中的函数交 friend