目录
传送门
进入正题
fstream的使用☀️
写文件
1.包含头文件1⃣️
2.创建流对象2⃣️
3.打开文件3⃣️
4.写数据4⃣️
5.关闭文件5⃣️
实例1⃣️
读文件
1.包含头文件1⃣️
2.创建流对象2⃣️
3.打开文件 并判断是否打开成功3⃣️
4.读数据4⃣️
5.关闭文件5⃣️
示例1⃣️
二进制文件
写文件1⃣️
读文件2⃣️
最后总结,文件操作基本5步⌚️
练习一下
最后
C++多线程6000字详解 传送门
84行代码实现洛谷占卜功能 传送门
C++获取当前时间 传送门
C++深度优先搜索详解 传送门
C++指针最全总结 传送门
以后还会分享更多c++内容
期待和大家一起进步!❤️❤️❤️
好啦,咱们的 废话 无关紧要的话 就说到这里了,直接进入正题
程序运行时产生的数据都属于临时数据,
程序一旦运行结束都会被释放,通过文件可以将数据持久化。
举个例子,你下载了一个游戏,你玩了一天,打到了50关
如果这个游戏有将数据持久化的代码(也就是存档),你第二天再次打开游戏时,你会发现你的记录还在第50关。
如果这个游戏没有将数据持久化的代码,你第二天再次打开游戏时,你会发现你的记录回到了第一关(欲哭无泪)
所以,一个实用的程序有数据持久化的代码是很重要的。
C++中对文件操作需要包含头文件
文件类型分为两种:
ASCII码
形式存储在计算机中操作文件的三大类:
写文件步骤如下:
#include
ofstream ofs;
注意,这里的ofs不是固定的对象名,这个对象名的命名规则与C++变量命名规则相同。
ofs.open("文件路径",打开方式);
这里要注意,文件路径必须是一个字符串,不可以是string变量。
ofs<<"写入的数据";
注意,这里的写入数据可以为所有类型的变量或一个字符串
ofs.close();
文件打开方式:
ios::in : 为读文件而打开文件
ios::out : 为写文件而打开文件
ios::app : 初始位置:文件尾
ios::app : 追加方式写文件
ios::trunc : 如果文件存在先删除,在创建
ios::binary : 二进制方式
注意,文件打开方式可以配合使用,利用 | 操作符
例如:用二进制方式写文件 ios::out | ios::binary
#include
#include
using namespace std;
#include //头文件包含
//文本文件 - 写文件
void text01()
{
//1.包含头文件 fstream
//2.创建流对象
ofstream ofs; // o - 写 f - 文件 stream - 流
//3.指定打开方式
ofs.open("text.txt", ios::out);
//4.写内容
ofs << " 姓名:张三" << endl;
ofs << " 年龄:18 " << endl;
ofs << " 性别:男 " << endl;
//5.关闭文件
ofs.close();
}
int main()
{
text01();
return 0;
}
总结:
文件操作必须包含头文件 fstream
读文件可以利用ofstream 或者 fstream类
打开文件时候需要制定操作文件的路径,以及打开方式
利用 << 可以向文件中写数据
操作完毕,要关闭文件
读文件与写文件步骤相似。
#include
ifstream ifs;
注意,这里的对象名同上面,也不是固定的。
ifs.open("文件路径",打开方式);
文件路径不能为变量名
ifs<<变量名/字符串;
ifs.close();
总结:
读文件可以利用ifstream 或者 fstream类
利用 is_open 函数可以判断文件是否打开成功
操作完毕,要关闭文件
以二进制的方式对文件进行读写操作
打开方式要指定为 ios::binary
二进制方式写文件主要利用流对象调用成员函数write
函数原型: ostream& write(const char *buffer, int len)
参数解释:字符指针 buffer 指向内存中一段存储空间。len 是读写的字节数
示例:
总结:
文件输出流对象 可以通过 write 函数,以二进制方式写数据
二进制方式写文件主要利用流对象调用成员函数read
函数原型: istream& read(char *buffer, int len)
参数解释:字符指针 buffer 指向内存中一段存储空间。len 是读写的字节数
示例:
#include
#include
using namespace std;
#include
//二进制文件-读文件
class Person
{
public:
string m_Name; //姓名
int m_Age{}; //年龄
};
void text01()
{
//1.包含头文件 fstream
//2.创建流对象
ifstream ifs; //ifstream ifs("Person.txt", ios::out | ios::binary);
//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()
{
text01();
return 0;
}
总结:
文件输出流对象 可以通过 read 函数,以二进制方式读数据
首先头文件,再创建对象,然后开文件,对数据操作,再关闭文件
是不是很easy?《easy》
众所周知,当我们在打游戏的时候,如果没有存档,第二天再打开游戏就要重新打记录,这样的话,我们就很容易累死,所以你要做出一个程序,来储存一个变量
效果:
用户输入一个int变量,第二次再打开的时候用户先输入变量,再输出:上次输入的是xxx。
你们可以自己写一下,
大佬就忽略吧,看完这篇文章就权当复习一下。
最后的最后就是拜拜了!
浅浅跟个风:我也没什么书好送的,北京这边快递也发不出去,以后再送书️这样吧,你评论,我用rand随机抽4个人送出C++学习资源!
互必回~