程序运行时产生的数据都属于临时数据,程序一旦关闭就释放了,而通过文件就能解决这个问题。
C++中对文件进行操作需要包含头文件<fstream>
文件类型分为两类:文本文件、二进制文件
ofstream:写操作
ifstream: 读操作
fetream:读写操作
首先看一下文本文件的建立示例:
#include<iostream>
using namespace std;
#include<fstream>
//文本文件 写文件
void test01()
{
//1、包含头文件 fstream
//2、创建流对象
ofstream ofs;
//3、指定打开方式
ofs.open("test.txt", ios::out);//(“文件路径”,打开方式)
//4、写内容
ofs << "姓名:张三" << endl;
ofs << "年龄:18" << endl;
ofs << "性别:男" << endl;
//5、关闭文件
ofs.close();
}
int main()
{
test01();
system("pause");
return 0;
}
这里需要讲解一下打开方式,有六中方式:
iOS::in 为读文件而打开文件
Ios::out 为写文件而打开文件
Ios::ate 初始位置:文件尾
Ios::app 追加方式写文件
Ios::trunc 如果文件存在先删除,再创建
Ios::binary 二进制方式
读文件与写文件类似我就不多赘述了
下面讲解二进制的读取
#include<iostream>
using namespace std;
#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;
}
注意:文件打开方式可以配合使用,利用 | 操作符
如前面示例写的 ios::in | ios::binary。