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

Just wondering what this line does/means to the computer

本文关键字:作用 意味着 什么 计算机 想知道      更新时间:2023-10-16
    int value(0);
    while (!(std::cin >> value)) { //THIS LINE RIGHT HERE IS BUGGING ME(am really a noob)
        cout << "you entered a non-digit charactern";
        cin.clear();
        cin.ignore();
    }

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

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

获取错误的输入是进入失败状态的一种方法。要退出状态,请调用clear(),并忽略有问题的输入,请调用ignore()。然后,您可以重试,如此循环中所示。

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

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

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