std::basic_ios<CharT,Traits>::eof
来自 cppreference.com
bool eof() const; |
||
如果相关联的流已到达文件末尾,则返回 true。具体来说,如果 rdstate() 中设置了 eofbit
,则返回 true。
有关设置 eofbit
的条件列表,请参阅 ios_base::iostate。
内容 |
[编辑] 参数
(无)
[编辑] 返回值
如果发生文件末尾,则返回 true,否则返回 false。
[编辑] 说明
此函数仅报告由最近的 I/O 操作设置的流状态;它不会检查相关联的数据源。例如,如果最近的 I/O 是一个 get(),它返回了文件的最后一个字节,则 eof()
返回 false。下一个 get()
无法读取任何内容,并设置 eofbit
。只有在那之后,eof()
才会返回 true。
在典型用法中,输入流处理会在任何错误上停止。然后可以使用 eof()
和 fail() 来区分不同的错误条件。
[编辑] 示例
运行此代码
#include <cstdlib> #include <fstream> #include <iostream> int main() { std::ifstream file("test.txt"); if (!file) // operator! is used here { std::cout << "File opening failed\n"; return EXIT_FAILURE; } // typical C++ I/O loop uses the return value of the I/O function // as the loop controlling condition, operator bool() is used here for (int n; file >> n;) std::cout << n << ' '; std::cout << '\n'; if (file.bad()) std::cout << "I/O error while reading\n"; else if (file.eof()) std::cout << "End of file reached successfully\n"; else if (file.fail()) std::cout << "Non-integer data encountered\n"; }
[编辑] 另请参阅
下表显示了 basic_ios 访问器 (good()、fail() 等) 的值,对于 ios_base::iostate 标志的所有可能组合。
ios_base::iostate 标志 | basic_ios 访问器 | |||||||
eofbit
|
failbit
|
badbit
|
good() | fail() | bad() | eof() | operator bool | operator! |
false | false | false | true | false | false | false | true | false |
false | false | true | false | true | true | false | false | true |
false | true | false | false | true | false | false | false | true |
false | true | true | false | true | true | false | false | true |
true | false | false | false | false | false | true | true | false |
true | false | true | false | true | true | true | false | true |
true | true | false | false | true | false | true | false | true |
true | true | true | false | true | true | true | false | true |
检查文件末尾 (function) |