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一个开始位置 复制过去相应的大小。

二进制方式就很强大,能够读取各种特殊类型的数据结构

posted @ 2019-06-23 09:31  稀里糊涂林老冷  阅读(2252)  评论(0编辑  收藏  举报