C++中对文件操作需要包含头文件<fstream >
文件类型分为两种:
1.文本文件:文件以文本的ASCII码形式存储在计算机中
2.二进制文件:文件以文本的二进制形式存储在计算机中,用户一般不能直接读懂它们
操作文件的三大类:
1.ofstream: 写操作
ifstream:读操作
fstream :读写操作
文件打开方式:
|------------|---------------|
| 打开方式 | 解释 |
| ios:in | 为读文件而打开文件 |
| ios:out | 为写文件而打开文件 |
| ios:ate | 初始位置:文件尾 |
| ios:app | 追加方式写文件 |
| ios:trunc | 如果文件存在先删除,再创建 |
| ios:binary | 二进制方式 |
文本文件
1、写文件
cpp#include <iostream> using namespace std; #include <string> #include <fstream> //文本文件 写文件 void test01() { //1、包含头文件 fstream //2、创建流对象 ofstream ofs; //指定打开方式 ofs.open("Test.txt", ios::out); //4、写内容 ofs << "姓名:张三" << endl; ofs << "性别:男" << endl; ofs << "年龄:18" << endl; //5、关闭文件 ofs.close(); } int main() { test01(); system("pause"); return 0; }
2、读文件
cpp#include <iostream> using namespace std; #include <string> #include <fstream> //读文件 void test01() { //1、包含头文件 //2、创建流对象 ifstream ifs; //3、打开文件 并且判断是否打开成功 ifs.open("test.txt", ios::in); if (!ifs.is_open()) { cout << "文件打开失败" << endl; return; } //4、读数据 //第一种 /*char buf[1024] = { 0 }; while (ifs >> buf) { cout << buf << endl; }*/ //第二种 /*char buf[1024] = { 0 }; while (ifs.getline(buf,sizeof(buf))){ cout << buf << endl; }*/ //3、第三种 /*string buf; while (getline(ifs, buf)) { cout << buf << endl; }*/ //4、第四种 char c; while ((c = ifs.get()) != EOF) { //EOF end of file cout << c; } //5、关闭文件 ifs.close(); } int main() { test01(); system("pause"); return 0; }
二进制文件
1、写文件
cpp#include <iostream> using namespace std; #include <string> #include <fstream> class Person { public: char m_Name[64]; int m_Age; }; void test01() { //1、包含头文件 //2、创建流对象 ofstream ofs("person.txt", ios::out | ios::binary); //3、打开文件 //ofs.open("person.txt", ios::out | ios::binary); //4、写文件 Person p = { "张三",18 }; ofs.write((const char*)&p, sizeof(Person)); //5、关闭文件 ofs.close(); } int main() { test01(); system("pause"); return 0; }
2、读文件
cpp#include <iostream> using namespace std; #include <string> #include <fstream> class Person { public: char m_Name[64]; int m_Age; }; void test01() { //1、包含头文件 //2、创建流对象 ifstream ifs; //3、打开文件 判断文件是否打开成功 ifs.open("person.txt", ios::in | ios::binary); if (!ifs.is_open()) { cout << "文件打开失败" << endl; return; } //4、读文件 Person p; ifs.read((char*)&p, sizeof(Person)); cout << "姓名:" << p.m_Name << " 年龄:" << p.m_Age << endl; //5、关闭文件 ifs.close(); } int main() { test01(); system("pause"); return 0; }
文件操作(个人学习笔记黑马学习)
寻心的无心者2023-09-11 8:26
相关推荐
xiaotao13121 小时前
02-机器学习基础: 监督学习——线性回归BestOrNothing_201521 小时前
C++零基础到工程实战(4.3.3):vector数组访问与遍历charlie11451419121 小时前
通用GUI编程技术——图形渲染实战(三十三)——Direct2D与Win32/GDI互操作:渐进迁移实战文祐21 小时前
C++类之虚函数表及其内存布局(一个子类继承一个父类)墨黎芜1 天前
ArcGIS从入门到精通——地图符号、注记的初步使用小李云雾1 天前
FastAPI重要知识点---中间件(Middleware).Cnn1 天前
JavaScript 前端基础笔记(网页交互核心)小夏子_riotous1 天前
Docker学习路径——3、常用命令STLearner1 天前
WSDM 2026 | 时间序列(Time Series)论文总结【预测,表示学习,因果】redaijufeng1 天前
网络爬虫学习:应用selenium获取Edge浏览器版本号,自动下载对应版本msedgedriver,确保Edge浏览器顺利打开。