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

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


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM