我希望打开不存在的输出文件失败。仅当输出文件存在时,我才希望打开成功。如何使用 ofstream 构造函数执行此操作?
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);
您不能更改std::ofstream
的构造函数。
您可以做的是定义自己的自定义流类。您自己的流可以检查文件是否存在,如果不存在,则失败。如果该文件存在,则可以将功能委托给作为数据成员包含的 ofstream。
另一种不需要自定义流的方法可能是更改代码,在首次验证文件存在之前甚至不尝试构造流。