C++ 打开文件只在不存在时写入

标签 c++ c file std

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

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

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

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

最佳答案

自 C11(因此也在 C++17 中),对于 fopen,您可以使用模式 "x" — 独占模式,参见 this :

File access mode flag "x" can optionally be appended to "w" or "w+" specifiers. This flag forces the function to fail if the file exists, instead of overwriting it.

关于C++ 打开文件只在不存在时写入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37709395/

相关文章:

c - 用C实时写入文件

python - Python 中具有 like-c 属性的结构

c++ - 将文本文件中的数据读入结构数组

git - 在 git 中创建包含特定文件的补丁

c++ - 从音频文件转换ExtAudioFile时,ExtAudioFileGetProperty失败

c++ - 找到多重定义的符号?

C_Login 在 C 中的 PKCS11 中失败

c++ - 如何将 16 位整数写入文件?

c++ - 在 MessageBox c++ 中显示一个变量

c++ - 从编辑控件中读取文本