std::basic_ios<CharT,Traits>::eof
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 <iostream> #include <fstream> #include <cstdlib> int main() { std::ifstream file("test.txt"); if(!file) // operator! 用于此 { std::cout << "File opening failed\n"; return EXIT_FAILURE; } // 典型的 C++ I/O 循环以 I/O 函数的返回值为循环控制条件, // operator bool() 用于此 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 |
检查文件尾 (函数) |