在我的C ++代码中,我经常将不同的值写入文件。我的问题是,如果有任何情况写或或<<考虑到文件成功打开的事实,会失败。我是否需要检查每次写入或<<确保它正确执行?
答案 0 :(得分:9)
列出所有内容的失败原因太多了。可能的是:
我是否需要检查每次写入或<<确保它正确执行?
如果您希望您的程序能够适应故障,那么肯定是是。如果你不这样做,它只是意味着你写的数据可能会或可能不会写,这相当于说你不关心它。
注意:您可以根据自己的喜好设置std::ostream::exceptions
,而不是在每次操作后检查流状态(很快就会非常繁琐),这样当流就会抛出异常失败(这不应该是一个问题,因为根据定义,这样的磁盘故障是非常特殊的。)
答案 1 :(得分:7)
写入失败的原因有很多。我的头顶是一些:
等等。
编辑:我知道你已经说过你正在写一个文件,我只想提请你注意这样一个事实,即你的代码应该只关心它正在写一个可以的ostream代表任何一种流。答案 2 :(得分:3)
其他人涵盖了可能导致输出失败的情况。
可是:
我是否需要检查每次写入或<<确保它正确执行?
对此,我会回答“不”。你可以想象一下
good()
。当然,这取决于所写数据的类型,以及从部分写入恢复到重新运行应用程序的可能性/相对复杂性。
如果您需要更准确地控制何时写入失败(例如,为了进行正常恢复),则链接到的ostream异常syam是可行的方法。每次操作后轮询流状态会使代码膨胀。