打开不存在的文件时,如何使ofstream构造函数失败?

时间:2019-02-20 16:36:19

标签: c++ ofstream

我希望打开不存在的输出文件失败。仅当输出文件存在时,我要打开成功。我该如何使用ofstream构造函数?

2 个答案:

答案 0 :(得分:2)

std::ofstream的构造函数使用std::ios_base::openmode来指定应如何打开文件。默认情况下,此值设置为ios_base::out,如果文件不存在,它将创建该文件。不过,您可以提供自己的模式,如果使用std::ios_base::out | std::ios_base::in,则不会创建任何文件。那会使您的代码看起来像这样:

std::ofstream fout("some_file.ext", std::ios_base::out | std::ios_base::in);

答案 1 :(得分:0)

您无法更改std::ofstream的构造函数。

您可以做的是定义自己的自定义流类。您自己的流可以检查文件是否存在,如果不存在则失败。如果文件存在,则可以将功能委托给作为数据成员包含的ofstream。

另一种不需要自定义流的方法可能是将代码更改为,甚至在您首先验证文件存在之前都不要尝试构造流。