要讀取檔案必須包含
可以使用fstream類,這個類可以對檔案進行讀寫操作。
1、開啟檔案。
開啟檔案可以有兩種方式,第一種可以使用fstream類的建構函式。
fstreamfile("test.dat",ios_base::in|ios_base::out|ios_base::app);
另外一種方法就是使用open函式。
fstreamfile;
file.open("test.dat",ios_base::in|ios_base::out|ios_base::app);
這樣就可以開啟一個可讀寫的檔案了。如果檔案不存在的話,就會建立一個新檔案並且以讀寫方式開啟。
這裡需要說明一點,如果檔案不存在的話,open函式中第二個引數必須包含ios_base::out|ios_base::app,
否則就不能正確建立檔案。
2、寫檔案。
先進性寫檔案的操作否則讀一個空檔案是沒有意義的。
既然是寫二進位制檔案可以向檔案中寫入一個整形值。寫二進位制字元只能使用write函式。
但是write函式的原形是write(constchar*ch,intsize)。第一個引數是char*型別,所以需要把將要寫入
檔案的int型別轉換成char*型別。這裡的轉換困擾了我好幾天,不過終於弄明白了。程式碼如下。
inttemp;
file.write((char*)(&temp),sizeof(temp));
3、讀檔案。
可以寫檔案了,讀檔案就好辦多了。讀檔案需要用到read函式。其引數和write大致相同,read(constchar*ch,intsize)。
要把內容讀到int型別變數中同樣涉及到一個型別轉換的問題。和寫檔案一樣。
intreadint;
file.read((char*)(&readint),sizeof(readint));
這樣檔案中的int值就讀入到int型變數readint中了。
4、檔案指標。
在檔案的讀寫過程中往往需要對檔案進行選擇性讀取。所以需要進行檔案指標的移動。這是需要用到seekg和seekp函式。
在fstream類中有兩個檔案指標,一個是讀取檔案的指標,一個是寫檔案的指標分別用tellg和tellp檔案來取得指標的位置。
同樣seekg和seekp兩個函式分別是對這兩個指標進行移動的函式。這兩個函式的引數都是一樣的。
先對幾個列舉型別進行一下說明:
ios_base::beg——檔案開始位置
ios_base::cur——檔案當前位置
ios_base::end——檔案末尾位置
下面以seekg為例說明一下指標移動的方法:
file.seekg(3)——指標移動到第三個字元的位置
file.seekg(ios_base::beg)——指標移動到檔案開頭
file.seekg(ios_base::end)——指標移動到檔案末尾
file.seekg(-3,ios_base::cur)——指標當前位置向前移動三個字元
file.seekg(3,ios_base::cur)——指標當前位置向後移動三個字元
file.seekg(3,file.tellg())——指標當前位置向後移動三個字元
file.seekg(file.tellg()+3)——指標當前位置向後移動三個字元
5、對檔案操作完畢後別忘了關閉檔案。
file.close();
以上5個步驟就完成了對檔案的讀寫操作。文字檔案的操作是相同的,比二進位制檔案還要簡單。
要讀取檔案必須包含
可以使用fstream類,這個類可以對檔案進行讀寫操作。
1、開啟檔案。
開啟檔案可以有兩種方式,第一種可以使用fstream類的建構函式。
fstreamfile("test.dat",ios_base::in|ios_base::out|ios_base::app);
另外一種方法就是使用open函式。
fstreamfile;
file.open("test.dat",ios_base::in|ios_base::out|ios_base::app);
這樣就可以開啟一個可讀寫的檔案了。如果檔案不存在的話,就會建立一個新檔案並且以讀寫方式開啟。
這裡需要說明一點,如果檔案不存在的話,open函式中第二個引數必須包含ios_base::out|ios_base::app,
否則就不能正確建立檔案。
2、寫檔案。
先進性寫檔案的操作否則讀一個空檔案是沒有意義的。
既然是寫二進位制檔案可以向檔案中寫入一個整形值。寫二進位制字元只能使用write函式。
但是write函式的原形是write(constchar*ch,intsize)。第一個引數是char*型別,所以需要把將要寫入
檔案的int型別轉換成char*型別。這裡的轉換困擾了我好幾天,不過終於弄明白了。程式碼如下。
inttemp;
file.write((char*)(&temp),sizeof(temp));
3、讀檔案。
可以寫檔案了,讀檔案就好辦多了。讀檔案需要用到read函式。其引數和write大致相同,read(constchar*ch,intsize)。
要把內容讀到int型別變數中同樣涉及到一個型別轉換的問題。和寫檔案一樣。
intreadint;
file.read((char*)(&readint),sizeof(readint));
這樣檔案中的int值就讀入到int型變數readint中了。
4、檔案指標。
在檔案的讀寫過程中往往需要對檔案進行選擇性讀取。所以需要進行檔案指標的移動。這是需要用到seekg和seekp函式。
在fstream類中有兩個檔案指標,一個是讀取檔案的指標,一個是寫檔案的指標分別用tellg和tellp檔案來取得指標的位置。
同樣seekg和seekp兩個函式分別是對這兩個指標進行移動的函式。這兩個函式的引數都是一樣的。
先對幾個列舉型別進行一下說明:
ios_base::beg——檔案開始位置
ios_base::cur——檔案當前位置
ios_base::end——檔案末尾位置
下面以seekg為例說明一下指標移動的方法:
file.seekg(3)——指標移動到第三個字元的位置
file.seekg(ios_base::beg)——指標移動到檔案開頭
file.seekg(ios_base::end)——指標移動到檔案末尾
file.seekg(-3,ios_base::cur)——指標當前位置向前移動三個字元
file.seekg(3,ios_base::cur)——指標當前位置向後移動三個字元
file.seekg(3,file.tellg())——指標當前位置向後移動三個字元
file.seekg(file.tellg()+3)——指標當前位置向後移動三個字元
5、對檔案操作完畢後別忘了關閉檔案。
file.close();
以上5個步驟就完成了對檔案的讀寫操作。文字檔案的操作是相同的,比二進位制檔案還要簡單。