`std::fopen` 中 `r+` 与 `w+` 的区别
std::fopen
中 r+
与 w+
的区别
C++ 中操作文件的 fopen
签名如下:
std::FILE* fopen( const char* filename, const char* mode );
其中第二个参数定义了文件以怎样的模式来打开,完整的模式表:
模式 | 含义 | 详情 | 文件存在时 | 文件不存在时 |
---|---|---|---|---|
"r" | 读 | 打开并读取 | 从头开始读取 | 抛错 |
"w" | 写 | 创建并写入 | 清空 | 创建 |
"a" | 追加 | 向文件追加内容 | 从末尾开始追加 | 创建 |
"r+" | 扩展读 | 打开后可读写 | 从头 | 抛错 |
"w+" | 扩展写 | 创建并读写 | 清空 | 创建 |
"a+" | 扩展追加 | 打开后可读写 | 从末尾开始追加 | 创建 |
注意到 r+
和 w+
方式下,都可对文件进行读写操作,那么区别在哪?
前者侧重于读,所以不会清空文件或创建文件,如果尝试读取过程中发现文件不存在,直接抛错。
后者侧重于写,文件不存在会先创建,已经存在会先清空再写入内容。