【问题标题】:Is there a way to check if a fmt::output_file has been opened successfully for writing有没有办法检查是否已成功打开 fmt::output_file 进行写入
【发布时间】:2022-11-24 00:37:06
【问题描述】:

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

Demo

【问题讨论】:

    标签: c++ error-handling ostream fmt


    【解决方案1】:

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


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

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

    【讨论】:

    • @ridilculous 请注意,默认情况下,output_file 将以file::WRONLY | file::CREATE | file::TRUNC 标志打开。为确保它不会在不存在的情况下创建文件,您需要手动传递一个不带 file::CREATE 的标志。
    猜你喜欢
    • 2016-07-15
    • 2023-03-09
    • 1970-01-01
    • 2023-01-14
    • 1970-01-01
    • 2010-09-18
    • 2021-08-11
    • 1970-01-01
    • 2021-02-13
    相关资源
    最近更新 更多