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 }
其實在寫文件的時候,只是 按照開始位置 和指定文件大小 寫入一段二進制ios
因此打開也這樣作, 給對象p一個開始位置 複製過去相應的大小。數據結構
二進制方式就很強大,可以讀取各類特殊類型的數據結構函數