#include<iostream>
#include<fstream>
using namespace std;
class Person
{
public:
char m_Name[64];
int m_Age;
};
void test01()
{
ifstream ifs;
ifs.open("person.txt", ios::in | ios::binary);
if (!ifs.is_open())
{
cout << "文件打开失败了";
return;
}
Person p;
ifs.read((char*)&p, sizeof(Person));
cout << "姓名:" << p.m_Name << " 年龄:" << p.m_Age << endl;
ifs.close();
}
int main() {
test01();
system("pause");
return 0;
}
test01 函数
void test01()
{
ifstream ifs;
ifs.open("person.txt", ios::in | ios::binary);
if (!ifs.is_open())
{
cout << "文件打开失败了" << endl;
return;
}
Person p;
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();
:关闭文件流,确保读取操作完成并释放相关资源。