Cin, cin.get 和一个我无法理解的东西

Cin, cin.get and a thing that I cant understand

我这样写循环对不对

char temp;
while(cin.get(temp)) {
...
}

当输入流中没有符号时它会停止,如果流为空则不会执行? 好吧,我知道这不是真的,因为当我尝试时 - 它的工作原理与 cin >> temp 相同。那么,我怎么知道流是空的,这个循环必须停止?

overload of get that you use returns 对流对象的引用。

流 类 有 a boolean conversion operator 其中 returns false 错误或 文件结尾 .

因此,如果您在 POSIX 系统(如 Linux 或 macOS,或 Ctrl-Z 在 Windows) 的新行上,然后它将传播到流并且循环条件将变为 false 并且循环结束。

如果你想在一个特定的字符上结束循环,比如换行符,那么你需要在条件中添加它:

while (cin.get(temp) && temp != '\n')