Namespaces
Variants

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

From cppreference.net
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
检查文件结尾
(函数)