有没有一种通用的方法来检测c ++的文件写入错误?

时间:2016-06-01 12:22:39

标签: c++ opencv boost io filesystems

我有一个应用程序根据特定配置写入多个文件。有时我们使用普通的std:ostream,有时我们使用opencv或者使用boost编写。

对于std:ostream rdstate()函数。 在我看来,最好的解决方案是,如果我可以使用一些通用方法(例如来自os),它适用于每种机制。 有这样的事吗?

如果没有,有人能指出我关于类似于rdstate()的检查的文档吗? 感谢

更新:
我用这些函数编写文件:
OpenCV:cv::VideoWriter << image
提升:boost::iostreams::file_sink->write

我找到了检查bosst案例的书面数据的方法。 write函数返回写入的字节数,我可以将其与预期的字节进行比较。 对于我使用GetFileAttributesEx的openCV案例,确定文件大小并检查是否增加了。 这是一个好方法吗?

1 个答案:

答案 0 :(得分:0)

如果写入文件的基础操作系统调用返回错误指示,我希望std::ostream最终处于fail()状态。

您必须勤勉地检查std::ostream的状态,包括在显式close()之后,因为在写出缓冲数据的最后一位时可能会遇到写入错误。