c++ - ostream::write 或 ostream::operator<< 在什么情况下会失败?

标签 c++ file ofstream ostream

在我的 C++ 代码中,我不断地将不同的值写入文件。我的问题是,考虑到文件已成功打开这一事实,如果在任何情况下 write 或 << 会失败。我是否需要检查每次调用 write 或 << 以确保它已正确执行?

最佳答案

失败原因太多,无法一一列举。可能的是:

  • 分区终于满了
  • 用户超出了他的磁盘配额
  • 分区已被粗暴地卸载
  • 分区已损坏(文件系统错误)
  • 磁盘发生物理故障
  • ...

Do I need to check every single call of write or << to make sure it was carried out correctly?

如果您希望您的程序对故障具有弹性,那么肯定会。如果您不这样做,则仅表示您正在写入的数据可能会或可能不会被写入,这等于说您不关心它。

注意:您可以设置 std::ostream::exceptions 而不是在每次操作后检查流状态(这很快就会变得非常乏味)根据您的喜好,以便流在失败时抛出异常(这应该不是问题,因为根据定义,此类磁盘故障非常异常)。

关于c++ - ostream::write 或 ostream::operator<< 在什么情况下会失败?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16600828/

相关文章:

java - Java 中扩展名为 .00x 的文件合并

ios - 在 ios 中使用 swift 删除文件

c++ - 将找到的变换矩阵推广到整个图像

c++ - CMake/MinGW 未知编译器,gcc.exe 损坏

java - 使用 RestTemplate 上传 CommonsMultipartFile 的文件失败

c++ - 用C++保存文件没有写入数据

C++,fstream,从文件中读取没有给出正确的结果

c++ - 将巨大的二维 vector 写入文本文件太慢,如何提高性能?

c++ - C++ boost 二进制序列化库是否向后/向前兼容?

函数的 C++ 返回值与函数中的值不同