C++文件操作fstream
2021/10/23 11:40:10
本文主要是介绍C++文件操作fstream,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
目录
1.写文本文件
2.读文本文件
3.二进制方式写文件
4.二进制读文件
5.按指定格式读写数据stringstream
对文件流的读写
ifstream 对文件输入(读文件)
ofstream 对文件输出(写文件)
fstream 对文件输入或输出
文件打开方式:
ios::in | 读方式打开文件 |
ios::out | 写方式打开文件 |
ios::trunc | 如果此文件已经存在, 就会打开文件之前把文件长度截断为0 |
ios::app | 尾部最加方式(在尾部写入) |
ios::ate | 文件打开后, 定位到文件尾 |
ios::binary | 二进制方式(默认是文本方式) |
现在源程序同一目录下有”temp.txt“文档,文档内容为“凌云志”+空格+18(18为int类型)
1.写文本文件
#include<fstream> #include<iostream> using namesapce std; int main(){ ofstream ofs; //也可以使用fstream ,但是fstream默认打开方式不截断文件长度 //ofstream 的默认打开方式是截断式写入 ios::out|ios::trunc //fstream 的默认打开方式是截断写入 ios::out //建议指定打开方式 ofs . open("temp.txt",ios::out|ios::trunc); ofs<<"凌云志"<<" "<<18<<'\t'; ofs.close(); return 0; }
2.读文本文件
#include<fstream> #include<iostream> using namesapce std; int main(){ ifstream ifs; ifs.open("temp.txt"); //打开后判断文件是否为空 if(ifs.eof()); string name; int age; ifs>>name>>age; //空格符会自动跳过 cout<<"姓名:"<<name<<"年龄:"<<age<<endl; ifs.close(); return 0; }
3.二进制方式写文件
#include<fstream> #include<iostream> using namesapce std; int main() { string name = "凌云志"; int age = 18 ; ofstream outfile; //.dat文件用记事本打开会是乱码 outfile.open("user.dat", ios::out | ios::trunc | ios::binary); outfile << name << "\t"; //outfile << age << endl; //会自动转成文本(字符串)方式写入 outfile.write((char*)&age, sizeof(age)); //将age的地址转为char指针类型 // 关闭打开的文件 outfile.close(); system("pause"); return 0; }
4.二进制读文件
#include<fstream> #include<iostream> using namesapce std; int main(){ ifstream ifs; ifs.open("temp.text",ios::in|ios::binary); if(ifs.eof()){return;} string name; int age; //ifs>>age; temp是二进制存储,直接读取会以文本方式读出 //使用read读取会读取空格符\制表符..... //ifs.read((char*)&age,sizeof(age)); //正确读取方式 ifs>>name; //读取姓名 char ch; ifs.read((char*)&ch,sizeof(ch)); //读取空格 ifs.read((char*)&age,sizeof(age)); //读取年龄 cout<<name<<age<<endl; cout<<temp<<endl; }
5.按指定格式读写数据stringstream
#include<fstream> #include<string> #include<sstream> //按指定格式写文件 void funWrite(){ string name="凌云志"; int age 18; ofstream ofs; ofs.open("temp.txt"); stringstream s; s<<"姓名:"<<name<<"\t\t年龄:"<<age<<endl; //把指定格式数据写入文件 ofs<<s.str(); ofs.close(); } //按指定格式读文件 void funRead(){ ifstream ifs; ifs.open("temp.txt"); string line; char name[32]; int age; while(1){ if(ifs.eof()){break;} getline(ifs,line); //每次读取一行 //按C语言格式将读取的一行转为char*数组格式(line.c_str()) scanf_s(line.c_str(),"姓名:%s 年龄:%d",name,sizeof(name),&age); cout<<"姓名:"<<name<<"\t\t年龄:"<<age<<endl; } } int main(){ funWrite(); funRead(); return 0; }
这篇关于C++文件操作fstream的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2025-01-08CCPM如何缩短项目周期并降低风险?
- 2025-01-08Omnivore 替代品 Readeck 安装与使用教程
- 2025-01-07Cursor 收费太贵?3分钟教你接入超低价 DeepSeek-V3,代码质量逼近 Claude 3.5
- 2025-01-06PingCAP 连续两年入选 Gartner 云数据库管理系统魔力象限“荣誉提及”
- 2025-01-05Easysearch 可搜索快照功能,看这篇就够了
- 2025-01-04BOT+EPC模式在基础设施项目中的应用与优势
- 2025-01-03用LangChain构建会检索和搜索的智能聊天机器人指南
- 2025-01-03图像文字理解,OCR、大模型还是多模态模型?PalliGema2在QLoRA技术上的微调与应用
- 2025-01-03混合搜索:用LanceDB实现语义和关键词结合的搜索技术(应用于实际项目)
- 2025-01-03停止思考数据管道,开始构建数据平台:介绍Analytics Engineering Framework