我希望打开不存在的输出文件失败。仅当输出文件存在时,我要打开成功。我该如何使用ofstream构造函数?
答案 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。
另一种不需要自定义流的方法可能是将代码更改为,甚至在您首先验证文件存在之前都不要尝试构造流。