【发布时间】:2020-07-13 04:14:58
【问题描述】:
我知道我们可以使用 std::cin 作为条件,例如 in
while (std::cin >> value)
使用 std::cin 作为条件将调用成员函数std::ios::operator bool。它说 它“返回是否设置了错误标志(failbit 或 badbit)”,其中不包括 eofbit。尽管如此,传递文件结尾(通过 Ctrl+d)会终止循环。为什么? failbit 或 badbit 也可以设置 eofbit 吗?
我也找到了this 的解释,但是在 C++ Reference 中它特别说“这个函数不返回与成员好的相同”
【问题讨论】:
-
Eofbit 并不是真正的错误标志。它告诉你为什么会发生错误——输入失败(所以设置了失败位),因为读取尝试在看到有效的文本序列之前就到达了文件的末尾。
标签: c++ c++11 while-loop iostream flags