前言
以二进制的方式对文件进行读写操作
打开方式要指定为 == ios::binary ==
5.2.1 写文件
简单说明
- 二进制方式写文件主要利用流对象调用成员函数write
- 函数原型:ostream& write(const char* buffer, int len);
- 参数解释:字符指针buffer指向内存中一段存储空间。len是读写的字节数
代码示例
代码如下(示例):
#include <iostream>
#include <fstream>
using namespace std;
//二进制文件 写文件
class Person
{
public:
char m_Name[64]; //姓名
int m_Age; //年龄
};
void test01()
{
//1、包含头文件
//2、创建流对象
ofstream ofs;
//ofstream ofs("person.txt", ios::out | ios::binary); 2、3步可以合成这一步
//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();
return 0;
}
生成的文件中的内容:
5.2.2 读文件
简单说明
- 二进制方式读文件主要利用流对象调用成员函数read
- 函数原型:istream& read(char * buffer, int len);
- 参数解释:字符指针buffer指向内存中一段存储空间, len是读写的字节数
代码示例
代码如下(示例):
#include <iostream>
#include <fstream>
using namespace std;
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();
return 0;
}
运行结果如下: