cpp 文件打开模式
模式 | 文件流 | 说明 |
---|---|---|
ios::in | fstream ifstream | 读取、不存在报错 |
ios::out | ofstream fstream | 输出、清空、创建 |
ios::app | ofstream fstream | 追加、创建 |
ios::ate | ifstream | 读取、移动到文件末尾、不存在报错 |
ios::trunc | ofstream | 打开文件时会清空内部存储的所有数据,单独使用时与 ios::out 相同。 |
ios::in | ios::out fstream 打开已存在的文件,既可读取其内容,也可向其写入数据。文件刚打开时,原有内容保持不变。如果文件不存在,则打开出错。 | |
ios::in | ios::out ofstream 打开已存在的文件,可以向其写入数据。文件刚打开时,原有内容保持不变。如果文件不存在,则打开出错。 | |
ios::in | ios::out | ios::trunc fstream 打开文件,既可读取其内容,也可向其写入数据。如果文件本来就存在,则打开时清除原来的内容;如果文件不存在,则新建该文件。 |
ios::binary ifstream | ||
ofstream | ||
fstream 以二进制方式打开文件。若不指定此模式,则以文本模式打开。 |
app模式下,移动指针无效,写总是在文件末尾追加
ifstream 默认有 ios::in, ofstream 默认有 ios::out, fstream 默认有 ios::in | ios out
上面这些模式可以随便组合、但是有些是无效的
假如 ofstream 用 ios::in,则不清空。 | ios::ate 则移动文件指针到末尾
ios::in 默认检查是否存在,不清空 ios::out默认清空
考虑的步骤
1、首先考虑ifstream ofstream
2、是否清空 ios::in 可以不清空、是否追加 、是否移动文件到末尾ios::ate
#include <iostream>
#include <fstream>
#include <string>
#include <vector>
#include "spd_logger.h"
using namespace std;
int main() {
ofstream outfile("C:\\Users\\Administrator\\Desktop\\test\\a.txt", ios::out | ios::in); // 创建文件输出流对象
if (outfile.is_open()) { // 判断文件是否成功打开
outfile << "a" << endl; // 将数据写入文件
outfile.close(); // 关闭文件输出流
cout << "数据已成功写入文件example.txt中" << endl;
} else {
cerr << "无法打开文件" << endl;
return 1;
}
return 0;
}