1 #include <iostream>
2 #include <fstream>
3 using namespace std; 4
5 /*
6 二进制方式进行读写文件,可以读写 各种各样数据类型的数据 7 */
8
9 class Person { 10 public: 11 char name[50]; 12 int age; 13 }; 14
15 // 1 写二进制文件
16 void binaryWrite() { 17 // 1 包含头文件 18 // 2 创建流对象 并指定路径和文件打开方式
19 ofstream ofs("person.txt", ios::out | ios::binary) ; 20 // 3 指定路径和打开方式: 利用了创建对象的构造函数 21 // 4 写文件 22 // 搞一个自己创建的对象进行写入
23 Person p = { "张三", 18 }; 24 ofs.write((const char*)&p, sizeof(Person)); 25 ofs.close(); 26 } 27
28 // 2 二进制方式读文件
29 void binaryRead() { 30 // 1 包含头文件 31 // 2 创建流对象
32 ifstream ifs; 33 // 3 指定文件路径和打开方式
34 ifs.open("person.txt", ios::in | ios::binary); 35 if (!ifs.is_open()) { 36 cout << "文件打开失败" << endl; 37 return; 38 } 39 // 4 读取文件
40 Person p; 41 ifs.read((char *)&p, sizeof(Person)); 42 cout << p.name << " " << p.age << endl; 43 // 5 关闭流
44 ifs.close(); 45 } 46
47 int main() { 48
49 //binaryWrite();
50 binaryRead(); 51
52 system("pause"); 53 return 0; 54 }
其实在写文件的时候,只是 按照开始位置 和指定文件大小 写入一段二进制
所以打开也这样做, 给对象p一个开始位置 复制过去相应的大小。
二进制方式就很强大,能够读取各种特殊类型的数据结构