提问人:Argos 提问时间:4/1/2020 更新时间:4/1/2020 访问量:67
C++:使用 std::cin 作为条件时的文件末尾解释
C++: end-of-file interpretation when using std::cin as a condition
问:
我知道我们可以使用 std::cin 作为条件,例如,在
while (std::cin >> value)
使用 std::cin 作为条件将调用成员函数 std::ios::operator bool。它说 它“返回是否设置了错误标志(failbit 或 badbit)”,其中不包括 eofbit。尽管如此,传递文件末尾(按 Ctrl+d)会终止循环。为什么?failbit 或 badbit 也可以设置 eofbit 吗?
我也找到了这个解释,但在 C++ 参考中,它特别说“此函数返回与成员 good 不同”
答:
1赞
john
4/1/2020
#1
上面的循环不测试文件末尾。它测试无法读取值,文件末尾只是造成这种情况的一个可能原因。即使文件末尾也不一定会导致无法读取值,想象一下读取一个整数,其中数字在文件末尾终止,即使您点击文件末尾,您仍然读取整数。
底线是,由于任何原因未能读取值都会设置失败位,此循环对此进行测试。
评论