我有一个应用程序,它根据特定的配置写入多个文件。有时我们使用普通的 std:ostream,有时我们使用 opencv 或 boost 编写。
用于 std:ostream rdstate() 函数。 在我看来,最好的解决方案是,如果我可以使用某种适用于每种机制的通用方法(例如来自操作系统)。 有这样的吗?
如果没有,谁能告诉我有关类似于 rdstate() 的检查的文档? 谢谢
更新:
我用这些函数编写文件:
OpenCV:cv::VideoWriter << image
boost :boost::iostreams::file_sink->write
我找到了一种方法来检查 bosst 案例的书面数据。 write
函数返回写入的字节数,我可以将其与预期的字节数进行比较。
对于我使用的 openCV 案例 GetFileAttributesEx
确定文件大小并检查是否增加。
这样好吗?
最佳答案
如果写入文件的底层操作系统调用返回错误指示,我希望 std::ostream
以 fail()
状态结束。
您只需要勤于检查 std::ostream
的状态,包括在显式 close()
之后,因为写入时可能会遇到写入错误输出缓冲数据的最后几位。
关于c++ - 有没有一种通用的方法可以用 C++ 检测文件写入错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37568539/