1.C 文件 IO 流文件交互文件流类继承自标准 IO 流因此也支持/运算符同时扩展了文件操作的专属功能。1. 核心文件流类类名继承关系作用ifstreamistream输入文件流读取文件ofstreamostream输出文件流写入文件fstreamiostream双向文件流读写文件2. 基础用法文件打开方式通过构造函数或open()函数打开文件可指定模式模式作用ios::in读文件默认ifstreamios::out写文件默认ofstream会清空原文件ios::app追加写入不清空文件末尾添加ios::trunc清空文件配合ios::out使用ios::binary二进制模式读写不处理换行符示例// 方式1构造函数直接打开 ofstream ofs(test.txt, ios::app); // 方式2先创建对象再open ifstream ifs; ifs.open(test.txt, ios::in);打开状态判断通过!ifs或ifs.is_open()判断文件是否成功打开if (!ifs.is_open()) { cerr 文件打开失败 endl; return -1; }文件读写操作文本模式默认用/读写或getline读取整行ofs hello world endl; // 写入文本 string line; getline(ifs, line); // 读取整行二进制模式用read()/write()直接按字节读写适合非文本数据如图片、结构体char buf[1024]; ifs.read(buf, sizeof(buf)); // 读取二进制数据 ofs.write(buf, sizeof(buf)); // 写入二进制数据文件关闭析构函数会自动调用close()也可手动关闭释放资源。2. 随机访问文件通过文件指针操作实现文件的随机读写核心函数1.seekg(pos)设置读指针位置gget2.seekp(pos)设置写指针位置pput3.tellg()/tellp()获取当前读 / 写指针位置示例ifs.seekg(0, ios::end); // 读指针移到文件末尾 long size ifs.tellg(); // 获取文件大小 ifs.seekg(0, ios::beg); // 读指针移回文件开头3.stringstream 的简单介绍1. 核心类类名作用istringstream从字符串中读取数据输入流ostringstream向字符串中写入数据输出流stringstream支持读写双向操作2. 常见应用场景场景 1数据类型转换安全替代 C 的atoi/sprintf// 数字转字符串 int num 12345; stringstream ss; ss num; string str ss.str(); // str 12345 // 字符串转数字 string s 6789; int n; ss.clear(); // 重置流状态关键 ss.str(s); ss n; // n 6789场景 2字符串分割按空格 / 指定分隔符string line apple banana orange; stringstream ss(line); string fruit; while (ss fruit) { // 按空格分割 cout fruit endl; }场景 3高效拼接字符串ostringstream oss; oss 姓名 张三 , 年龄 18; string info oss.str(); // 比多次用拼接更高效4. 关键注意事项1.重复使用stringstream时需先调用ss.clear()重置流状态再用ss.str()清空底层字符串否则残留数据会影响后续操作。2.转换失败时流会设置failbit需通过ss.fail()检查状态。补充流的继承关系图谢谢