繁体   English   中英

ifstream eof函数(C ++)

[英]ifstream eof function (C++)

我有以下代码:

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”。

输出为否,始终为否。 我不明白。我用错了吗?

编辑:仍然.eof()不起作用

std::basic_istream<...>::eof()仅在最近提取将流状态中的相应位设置为适当时返回true。 构造文件流时,其流状态始终为std::ios_base::goodbit

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

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

只有在读取尝试读取文件末尾之后才设置eofbit错误状态标志。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM