C++的檔案操作
阿新 • • 發佈:2018-11-22
檔案操作的基本形式
1、定義檔案流物件
2、通過建構函式或者成員函式open開啟檔案(若檔案不存在則建立)
3、開啟檔案失敗時的中斷或檔案處理
4、對檔案進行各種操作
5、檔案處理結束時關閉檔案
檔案是存在於磁碟上的,流物件則位於記憶體空間,若定義輸入流物件ifstream inf;則與inf關聯的檔案預設是以讀的方式開啟的,即將資料從磁碟檔案讀入記憶體空間,讀資料使用read成員函式。若定義輸出流物件ofstream iof;則與iof關聯的檔案預設是以寫的方式開啟的,即將資料從記憶體空間寫入磁碟檔案,寫資料使用write成員函式。
/*例子:已知檔案book.dat中有100個數據銷售記錄,每個銷售記錄由程式碼、書名、單價、和數量4個組成部分組成,檔案每行包括上述四個組成成分,並且使用Tab間隔,格式如下: 1001 軟體世界 5 100 1002 計算機工程 6 120 要求將所有記錄寫入到out.dat檔案中,然後將第一行資料輸出到螢幕。*/ #include <fstream> #include <iostream> using namespace std; struct Book { char c[5],n[11]; int p,q; };//定義一個Book型別的資料結構,包含四個組成成分 int main(void) { Book a; ifstream inf("book.dat");//檔案輸入流是讀模式,即將檔案中內容讀入記憶體中; ios_base::openmode m = ios_base::in|ios_base::out; ofstream iof("out.dat",m|ios_base::trunc|ios_base::binary);//開啟(新建一個二進位制檔案) if(inf.fail()||iof.fail()) return -1; while(!inf.eof()) { inf>>a.c>>a.n>>a.p>>a.q; iof.write((char *)&a,sizeof(Book)); } inf.close(); iof.close();//將兩個檔案都關閉 //iof.seekp(0*sizeof(Book),ios_base::beg); ifstream iinf("out.dat");//重新將out.dat檔案開啟為ifstream類物件,以便將第一行資料寫入a iinf.read((char *)&a,sizeof(Book)); cout<<a.c<<endl<<a.n<<endl<<a.p<<endl<<a.q<<endl; iinf.close(); return 0; }