【发布时间】:2019-02-23 13:05:49
【问题描述】:
我几乎找不到这方面的任何信息。是否,如果可以,在什么情况下可以设置eofbit(意思 ofstream_instance.eof() 为true)?
我对独立的 ofstream 更感兴趣,它与某个 fstream 中的 ifstream 不相关,因此 ifstream 无法设置“共享”eofbit(如果可能的话)。
如果我只是写入一个文件并且磁盘上没有空间或操作系统没有为写入提供另一个空间,那么我希望只设置失败位或坏位,但在到达文件末尾时给它写信对我来说没有意义。但是我没有找到关于这个的讨论。
【问题讨论】:
-
我还是不明白为什么必须在
std::ofstream中设置eof位。如果您close()std::ofsteam并且它没有失败,我会假设输出成功。不过,我在某处读到这只是“高于”操作系统级别的真实情况。为硬盘授予此权限可能需要更多的努力(除了标准 C++),例如做一个fsync()。 (我的胃是对的 - 找到了:)SO: How do I ensure data is written to disk before closing fstream?