在我的 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/