std::basic_ios<CharT,Traits>::eof

来自cppreference.com
< cpp‎ | io‎ | basic ios
 
 
 
 
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
检查文件尾
(函数)