我正在尝试使用fmt::output_file,并且正在寻找一种方法来检查文件是否已经成功打开以进行写入。这是可能的吗?做这件事的惯用方法是什么?Demo
fmt::output_file
68de4m5k1#
实际上,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的标志:
sopen_s
open
std::system_error
std::system_error::code
file::WRONLY | file::CREATE | file::TRUNC
file::CREATE
fmt::output_file(file_name, fmt::file::WRONLY | fmt::file::TRUNC);
1条答案
按热度按时间68de4m5k1#
实际上,
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
的标志: