代码如下:
string fname = "/home/jack/example.csv";
ifstream csvin(fname.c_str());
if (csvin.eof()) {
do_something;
}
我的问题是:在什么情况下 eof()
返回 true。我有以下选择:
- 文件不存在。
- 文件为空。
- 文件不存在或为空。
不幸的是documentation没有帮助,因为我不知道 eofbit error state flag
是什么意思。我也不明白 End-of-File is reached in the sequence associated with the stream
是什么意思。我假设 c_str() 返回一些迭代器,如果它已经被某些东西使用它可能已经结束了。但是,我对 c_str()
的结果是新鲜的简单情况感兴趣,如果文件不存在它将返回什么,如果文件为空它将返回什么?
已编辑
我只想知道上面给定的代码在两种情况下返回什么:
- 文件不存在。
- 文件为空。
最佳答案
eof() 当您在流中所读取的位置已到达文件末尾时返回 true。它实际上返回读取文件末尾(尝试读取过去)时设置的 eof 标志 的值。查看C++: .eof on an empty file有关 eof 和空文件的讨论!
关于c++ - eof() 返回什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15901092/