- #include <iostream>
- #include <fstream>
- using namespace std;
- /*
- 二进制方式进行读写文件, 可以读写 各种各样数据类型的数据
- */
- class Person {
- public:
- char name[50];
- int age;
- };
- // 1 写二进制文件
- void binaryWrite() {
- // 1 包含头文件
- // 2 创建流对象 并指定路径和文件打开方式
- ofstream ofs("person.txt", iOS::out | iOS::binary) ;
- // 3 指定路径和打开方式: 利用了创建对象的构造函数
- // 4 写文件
- // 搞一个自己创建的对象进行写入
- Person p = { "张三", 18 };
- ofs.write((const char*)&p, sizeof(Person));
- ofs.close();
- }
- // 2 二进制方式读文件
- void binaryRead() {
- // 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.name << " " << p.age << endl;
- // 5 关闭流
- ifs.close();
- }
- int main() {
- //binaryWrite();
- binaryRead();
- system("pause");
- return 0;
- }
其实在写文件的时候, 只是 按照开始位置 和指定文件大小 写入一段二进制
所以打开也这样做, 给对象 p 一个开始位置 复制过去相应的大小.
二进制方式就很强大, 能够读取各种特殊类型的数据结构
来源: http://www.bubuko.com/infodetail-3101036.html