對二進位制檔案的操作(c++ 程式設計 by 譚浩強 課本例項)
阿新 • • 發佈:2019-01-30
//將一批資料以二進位制形式存放在磁碟檔案中 #include<iostream> #include<fstream> using namespace std; struct student { char name[20]; int num; int age; char sex; }; int main() { student stud[3]={"Li",1001,18,'f',"Fun",1002,19,'m',"Wang",1004,17,'f'}; //定義輸出檔案流物件outfile,以輸出方式開啟二進位制檔案 ofstream outfile("stud.dat",ios::binary); if(!outfile) { cout<<"open error!"<<endl; abort(); //退出程式與exit(1)作用相同 } for(int i=0;i<3;i++) //第一個形參要用(char *)進行強制轉換為字元指標 //第二個形參是指定一次輸出的位元組數 outfile.write(( char *)&stud[i],sizeof(stud[i])); outfile.close(); //關閉檔案 system("pause"); return 0; }
//將剛才以二進位制形式存放在磁碟檔案的資料讀入記憶體並在顯示器上顯示 #include<iostream> #include<fstream> using namespace std; struct student { char name[20]; int num; int age; char sex; }; int main() { student stud[3]; int i; //定義輸入檔案流物件infile,以輸入方式開啟磁碟檔案stud.dat ifstream infile("stud.dat",ios::binary); if(!infile) //開啟失敗 { cerr<<"open error!"<<endl; abort(); } for(i=0;i<3;i++) //呼叫成員函式read來讀二進位制檔案 infile.read((char *)&stud[i],sizeof(stud[i])); infile.close(); //關閉檔案 for(i=0;i<3;i++) //分別輸出三個同學的資訊 { cout<<"NO."<<i+1<<endl; cout<<"name:"<<stud[i].name<<endl; cout<<"num:"<<stud[i].num<<endl; cout<<"age:"<<stud[i].age<<endl; cout<<"sex:"<<stud[i].sex<<endl; cout<<endl; } system("pause"); return 0; }