cpp
#include<iostream>
//1、包含头文件 fstream
#include<fstream>
using namespace std;
class Person
{
public:
char m_Name[64];//姓名
int m_Age;//年龄
};
void test01()
{
//2、创建流对象
ifstream ifs;
//3、打开文件 判断文件是否打开成功
ifs.open("person.txt", ios::in | ios::binary);
if (!ifs.is_open())
{
cout << "文件打开失败了";
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;
}
test01 函数
cpp
void test01()
{
ifstream ifs; // 创建输入流对象
ifs.open("person.txt", ios::in | ios::binary); // 以二进制读取的方式打开文件 "person.txt"
if (!ifs.is_open())
{
cout << "文件打开失败了" << endl;
return;
}
Person p; // 创建一个 Person 对象 p,用于存储读取的数据
// 从文件中读取一个 Person 对象的数据
ifs.read((char*)&p, sizeof(Person));
// 输出读取到的姓名和年龄
cout << "姓名:" << p.m_Name << " 年龄:" << p.m_Age << endl;
ifs.close(); // 关闭文件流
}
ifstream ifs;
:创建一个输入文件流对象ifs
。ifs.open("person.txt", ios::in | ios::binary);
:以二进制读取的方式打开文件"person.txt"
。使用ios::in
表示读取操作,ios::binary
表示以二进制形式读取文件。if (!ifs.is_open()) { ... }
:检查文件是否成功打开,如果未成功打开,则输出错误信息并返回。Person p;
:创建一个Person
类型的对象p
,用于存储从文件中读取的数据。ifs.read((char*)&p, sizeof(Person));
:使用read()
方法从文件中读取sizeof(Person)
字节的数据,并将其存储在p
对象中。(char*)&p
是将p
的地址转换为char*
类型,以便read()
方法能够将二进制数据直接写入p
。cout << "姓名:" << p.m_Name << " 年龄:" << p.m_Age << endl;
:输出读取到的Person
对象的姓名和年龄。ifs.close();
:关闭文件流,确保读取操作完成并释放相关资源。