c++ 二进制方式读取文件 读取特殊类型数据
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一个开始位置 复制过去相应的大小。
二进制方式就很强大,能够读取各种特殊类型的数据结构