"eof"可以在ofstream中设置吗?
Can "eof" be set in ofstream?
我几乎找不到这方面的任何信息。是否以及如果可以,在什么情况下可以设置eofbit(意思是 ofstream_instance.eof() 为真)?
我对独立的 ofstream 更感兴趣,它与某个 fstream 中的 ifstream 无关,因此 "shared" eofbit 不能由 ifstream 设置(如果可能的话) ).
如果我简单地写入一个文件并且磁盘上没有 space 或者操作系统没有提供另一个 space 用于写入,那么我希望只有 failbit 或 badbit要设置,但在写入文件时到达文件末尾对我来说没有意义。但是我找不到关于这个的讨论。
No. eof()
returns eofbit
,对于没有关联输入流的输出流没有实际意义。
eofbit
indicates that an input operation reached the end of an input sequence
[ios.types] / 3.1, Table 107
设置eofbit
的动作被枚举here,它们都只作用于输入流。
我们可以想象一些奇怪的特定于实现的场景,其中在写入文件时会遇到 EOF(而不是其他一些错误情况)——也许有一个固定大小的文件缓冲区,我们正在通过一些OS 函数——但据我所知,标准库抽象不处理这种情况,而且我从来没有见过或听说过这样的 API。
我几乎找不到这方面的任何信息。是否以及如果可以,在什么情况下可以设置eofbit(意思是 ofstream_instance.eof() 为真)?
我对独立的 ofstream 更感兴趣,它与某个 fstream 中的 ifstream 无关,因此 "shared" eofbit 不能由 ifstream 设置(如果可能的话) ).
如果我简单地写入一个文件并且磁盘上没有 space 或者操作系统没有提供另一个 space 用于写入,那么我希望只有 failbit 或 badbit要设置,但在写入文件时到达文件末尾对我来说没有意义。但是我找不到关于这个的讨论。
No. eof()
returns eofbit
,对于没有关联输入流的输出流没有实际意义。
eofbit
indicates that an input operation reached the end of an input sequence[ios.types] / 3.1, Table 107
设置eofbit
的动作被枚举here,它们都只作用于输入流。
我们可以想象一些奇怪的特定于实现的场景,其中在写入文件时会遇到 EOF(而不是其他一些错误情况)——也许有一个固定大小的文件缓冲区,我们正在通过一些OS 函数——但据我所知,标准库抽象不处理这种情况,而且我从来没有见过或听说过这样的 API。