【发布时间】:2022-11-24 00:37:06
【问题描述】:
标签: c++ error-handling ostream fmt
标签: c++ error-handling ostream fmt
在后台,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);
【讨论】:
output_file 将以file::WRONLY | file::CREATE | file::TRUNC 标志打开。为确保它不会在不存在的情况下创建文件,您需要手动传递一个不带 file::CREATE 的标志。