只是想知道这条线对计算机的作用/意味着什么

时间:2013-10-02 22:39:54

标签: c++

    int value(0);
    while (!(std::cin >> value)) { //THIS LINE RIGHT HERE IS BUGGING ME(am really a noob)
        cout << "you entered a non-digit character\n";
        cin.clear();
        cin.ignore();
    }

这只是阻止人们输入字母而不是数字,但我想知道它是如何做到的

4 个答案:

答案 0 :(得分:2)

cin作为布尔值处理会告诉您它是否处于失败状态。 if ( cin )if ( cin.ok() )的简写。因此,只要输入流 OK,在进行一些输入后,循环就会继续。

获取错误输入是达到失败状态的一种方法。要退出该状态,请致电clear(),并忽略有问题的输入,请致电ignore()。然后你可以再试一次,就像在这个循环中一样。

答案 1 :(得分:1)

如果cin收到的数据类型与value不兼容,那么基本上它会返回false。

答案 2 :(得分:0)

cin >> value返回cin个对象。如果用户输入的类型与特定的重载(在代码中,它是false)不匹配,则评估为int,或者不能隐式转换为它。

答案 3 :(得分:0)

cin是类istream的对象,表示标准输入流。它对应于cstdiostdin

流的

operator >>重载返回对同一流的引用,并且可以根据通过转换运算符的内部流状态,在布尔条件下对truefalse进行评估。 cin提供格式化的流提取。

操作

int value;
!(std::cin >> value)
如果数值为,

将失败 输入,如果输入非数字值,则返回true。

    cin.clear(); // will reset the state of stream
    cin.ignore(); // ignore one or more characters