这是代码:
string fname = "/home/jack/example.csv";
ifstream csvin(fname.c_str());
if (csvin.eof()) {
do_something;
}
我的问题是:什么情况下eof()
返回真。我有以下选择:
- 文件不存在。
- 文件为空。
- 文件不存在或为空。
很遗憾文档 http://www.cplusplus.com/reference/ios/ios/eof/没有帮助,因为我不知道eofbit error state flag
方法。我也不懂什么End-of-File is reached in the sequence associated with the stream
意思是。我假设 c_str() 返回一些迭代器,如果它已经被某些东西使用,它可能已经到达终点。然而,我对简单的情况感兴趣,当结果c_str()
是新鲜的,如果文件不存在它会返回什么,如果文件为空它会返回什么?
EDITED
我只是想知道上面给出的代码在两种情况下返回什么:
- 文件不存在。
- 文件为空。
eof()当您正在读取的流中的位置已到达文件末尾时,返回 true。它实际上返回的是eof flag当读取文件末尾(尝试读取过去)时设置该值。查看C++:空文件上的 .eof https://stackoverflow.com/questions/12134242/c-eof-on-an-empty-file关于 eof 和空文件的讨论!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)