c++ - 有没有办法检查 fmt::output_file 是否已成功打开进行写入

标签 c++ error-handling ostream fmt

我正在尝试使用 fmt::output_file并正在寻找一种方法来检查文件是否已成功打开以进行写入。 这可能吗?执行此操作的惯用方法是什么?

Demo

最佳答案

在底层,fmt::output_file 将在 Windows 上使用 sopen_s 打开文件,在其他系统上使用 open 打开文件。如果文件无法打开写入,则会抛出std::system_error。您可以使用 std::system_error::code 检索返回码如果需要的话。


请注意,默认情况下,fmt::output_file 将使用 file::WRONLY | 打开文件。文件::创建| file::TRUNC 标志。为了确保在给定路径不存在时不会创建文件,您应该手动传递一个不带 file::CREATE:

的标志
fmt::output_file(file_name, fmt::file::WRONLY | fmt::file::TRUNC);

关于c++ - 有没有办法检查 fmt::output_file 是否已成功打开进行写入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74548103/

相关文章:

c++ - 没有指定第一个参数的可变参数函数?

swift - 如何快速显示带有多个错误的错误消息?

c++ - 为什么在 "std::ostream &operator<<"内存泄漏?

C++ istream operator >>

c++ - C++ atexit() 函数发生奇怪的崩溃

c++ - 在更多 C++ 编译器/平台上调用 FINGERPRINT_premain

c++ - 我可以强制 std::vector 留下内存泄漏吗?

android - MVP RxJava2 - 管理网络错误

error-handling - 可以使用make-instance创建条件吗?

c++ - undefined reference - C++ 中的 `a = -b;` 和 `a = -1*b;` 以及 `a = 0-b` 之间应该有区别吗?