std::basic_ios<CharT,Traits>::eof
来自cppreference.com
<tbody>
</tbody>
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!
{
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";
}
参阅
下表显示 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 |
| 检查文件尾 (函数) |