std::basic_ios<CharT,Traits>:: eof
|
bool
eof
(
)
const
;
|
||
当关联的流达到文件末尾时返回
true
。具体来说,若
eofbit
在
rdstate()
中被设置则返回
true
。
请参阅
ios_base::iostate
了解设置
eofbit
的条件列表。
目录 |
参数
(无)
返回值
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! { std::cout << "文件打开失败\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 错误\n"; else if (file.eof()) std::cout << "成功到达文件末尾\n"; else if (file.fail()) std::cout << "遇到非整数数据\n"; }
参见
下表展示了所有可能的 ios_base::iostate 标志组合下, basic_ios 访问器( good() 、 fail() 等)的对应取值:
| 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 |
|
检查文件结尾
(函数) |