c++ - C++中输入检查的问题

标签 c++ input

我希望程序循环直到输入有效(x是一个int,并且x>0),但是当我给它1,1时我的程序接受输入,当我给它一个字符串时无限循环,重复“输入错误!”。

#include <iostream>

using namespace std;

int main()
{
    bool fail;
    int x;
    do{
        cin >> x;
        fail=(cin.fail() || x<=0);
        if (fail){
            cout << "Wrong input!" <<endl;
            cin.clear();
        };
    }while(fail);
    return 0;
}

最佳答案

在 if 语句中使用标准成员函数ignore。例如

std::cin.ignore(std::numeric_limits<std::streamsize>::max(),’\n’);

或者只是

std::cin.ignore();

用于跳过缓冲区中的无效符号。

关于c++ - C++中输入检查的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35719352/

相关文章:

forms - bootstrap-tags输入表单,按回车键提交

iphone - 显示只允许数字和小数点的输入?

java - 如何在不使用shell的情况下将多个文件提供给java中的命令行

c++ - `boost::make_tuple` 是否进行复制?

c++ - 将 double 分配给 int 数组时的类型转换

c++ - 通过VideoWriter发送帧;无法再次捕捉到它(OpenCV 3.1,c++)

python - 如果输入长度 > 20,则生成不同消息的子类方法

css - css 可以隐藏未选中的单选按钮吗?或者它的指标/边框?

c++ - 使用 GMock 验证析构函数调用

c++ - lambdas 的捕获列表在 C++11 中是如何工作的?