c++ - eof() 返回什么?

标签 c++ eof c-str

代码如下:

string fname = "/home/jack/example.csv";
ifstream csvin(fname.c_str());
if (csvin.eof()) {
    do_something;
}

我的问题是:在什么情况下 eof() 返回 true。我有以下选择:

  1. 文件不存在。
  2. 文件为空。
  3. 文件不存在或为空。

不幸的是documentation没有帮助,因为我不知道 eofbit error state flag 是什么意思。我也不明白 End-of-File is reached in the sequence associated with the stream 是什么意思。我假设 c_str() 返回一些迭代器,如果它已经被某些东西使用它可能已经结束了。但是,我对 c_str() 的结果是新鲜的简单情况感兴趣,如果文件不存在它将返回什么,如果文件为空它将返回什么?

已编辑

我只想知道上面给定的代码在两种情况下返回什么:

  1. 文件不存在。
  2. 文件为空。

最佳答案

eof() 当您在流中所读取的位置已到达文件末尾时返回 true。它实际上返回读取文件末尾(尝试读取过去)时设置的 eof 标志 的值。查看C++: .eof on an empty file有关 eof 和空文件的讨论!

关于c++ - eof() 返回什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15901092/

相关文章:

c++ - STL克隆载体

android - 是否可以在 Android Studio 中调试 C/C++?

ruby - 使用 Net::HTTP.start 获取随机 "read_nonblock':到达文件结尾(EOFError)”

C++ fill() 与 uninitialized_fill()

c++ - 代码块中没有 openssl_applink

c - C 程序中的文件结尾 (EOF)

python - 什么是检测下一次读取将在 Python 3(和 Python 2)中产生 EOF 的 Pythonic 方法

c++ - std::string::c_str & 空终止

通过从其他已初始化的字符串中复制索引字符形成的 C++ 字符串。无法使用 cout 打印新形成的字符串