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

标签 c++ opencv boost io filesystems

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

用于 std:ostream rdstate() 函数。 在我看来,最好的解决方案是,如果我可以使用某种适用于每种机制的通用方法(例如来自操作系统)。 有这样的吗?

如果没有,谁能告诉我有关类似于 rdstate() 的检查的文档? 谢谢

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

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

最佳答案

如果写入文件的底层操作系统调用返回错误指示,我希望 std::ostreamfail() 状态结束。

您只需要勤于检查 std::ostream 的状态,包括在显式 close() 之后,因为写入时可能会遇到写入错误输出缓冲数据的最后几位。

关于c++ - 有没有一种通用的方法可以用 C++ 检测文件写入错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37568539/

相关文章:

c++ - 如何防止在 boost::fast_pool_allocator 管理的对象上调用析构函数?

c++ - 使用 Phoenix Bind 绑定(bind) boost 信号

c++ - 是否可以浏览结构?

python - OpenCV:FFMPEG:标签 0x34363268/'h264' 不支持编解码器

c++ - boost::weak_ptr 过期后的排序顺序?

python - 如何以最佳方式调整我的面部识别常数(即阈值)?

opencv - 无法检测到图像上的等号

c++ - 有符号字节和奇偶校验字节的区别

c++ - 如何将 Poco::Net::HTTPClientSession 的套接字设置为 TCP_NODELAY?

c++ - 隔离段错误 - 但为什么会发生?