std::fopenr+w+ 的区别

C++ 中操作文件的 fopen 签名如下:

std::FILE* fopen( const char* filename, const char* mode );

其中第二个参数定义了文件以怎样的模式来打开,完整的模式表:

模式 含义 详情 文件存在时 文件不存在时
"r" 打开并读取 从头开始读取 抛错
"w" 创建并写入 清空 创建
"a" 追加 向文件追加内容 从末尾开始追加 创建
"r+" 扩展读 打开后可读写 从头 抛错
"w+" 扩展写 创建并读写 清空 创建
"a+" 扩展追加 打开后可读写 从末尾开始追加 创建

注意到 r+w+ 方式下,都可对文件进行读写操作,那么区别在哪?

前者侧重于,所以不会清空文件或创建文件,如果尝试读取过程中发现文件不存在,直接抛错。

后者侧重于,文件不存在会先创建,已经存在会先清空再写入内容。

相关资源