ifstream eof函数(C ++)

时间:2014-01-12 18:24:58

标签: c++ file ifstream eof

我有这段代码:

string a = "D:\\Users\\user-pc\\Desktop\\testing\\a.txt";

ifstream f;
    /*edit*/ string line;

    /*edit*/ getline(f, line);
f.open(a);
if ( f.eof() )
    cout << "ended";
else
    cout << "nope"

和文件'a.txt'中没有任何内容。

输出是nope,总是没有。我不明白..我用错了吗?

编辑:仍然.eof()无效

2 个答案:

答案 0 :(得分:4)

如果最近的提取在流状态中设置了适当的位,则

std::basic_istream<...>::eof()仅返回true。构造文件流时,其流状态始终为std::ios_base::goodbit

另一种方法是检查下一个可用字符是否为EOF字符:

if (f.peek() == std::char_traits<char>::eof())

答案 1 :(得分:1)

eofbit错误状态标志仅在读取尝试读取超过文件末尾时设置。