我有这段代码:
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()无效
答案 0 :(得分:4)
std::basic_istream<...>::eof()
仅返回true。构造文件流时,其流状态始终为std::ios_base::goodbit
。
另一种方法是检查下一个可用字符是否为EOF字符:
if (f.peek() == std::char_traits<char>::eof())
答案 1 :(得分:1)
eofbit错误状态标志仅在读取尝试读取超过文件末尾时设置。