C++打开文件只有在不存在的情况下才能写入

gal*_*tte 2 c c++ file std

我想用标准库打开一个文件进行写入,但如果文件已经存在,则打开的文件应该会失败.

从我在文档中可以阅读的内容来看,ofstream :: open只允许追加或截断.

我当然可以尝试打开以进行读取以检查文件是否存在,如果不存在则重新打开以进行写入,但不能保证文件不会被其他进程创建.

有人可以确认这在使用标准库(std :: iostream)或C函数(FILE*函数)的C++中是不可能的

Pio*_*ycz 6

由于C11(因而也是在C++ 17),用于fopen可使用模式"x"-独占模式,看到这个:

文件访问模式标志"x"可以可选地附加到"w"或"w +"说明符.如果文件存在,此标志会强制函数失败,而不是覆盖它.

  • 这是误导。问题是关于C++的,这种访问方式只有C11才有。 (2认同)