『壹』 如何快速讀取二進制文件
快速讀取二進制文件的方法如下:
1、打開文件。
打開文件可以有兩種方式,第一種可以使用fstream類的構造函數。fstream file("test.dat",ios_base::in|ios_base::out|ios_base::app); 另外一種方法就是使用
open函數。fstream file;file.open("test.dat",ios_base::in|ios_base::out|ios_base::app);
這樣就可以打開一個可讀寫的文件了。如果文件不存在的話,就會創建一個新文件並且以讀寫方式打開。這里需要說明一點,如果文件不存在的話,open函數中第二個參數必須包含ios_base::out|ios_base::app,否則就不能正確創建文件。
2、寫文件。
先進性寫文件的操作否則讀一個空文件是沒有意義的。
既然是寫二進制文件可以向文件中寫入一個整形值。寫二進制字元只能使用write
函數。但是write函數的原形是write(const char * ch, int size)。第一個參數是char *
類型,所以需要把將要寫入文件的int類型轉換成char *類型。這里的轉換困擾了我好幾天,不過終於弄明白了。代碼如下。int temp; file.write((char *)(&temp),sizeof(temp));
3、讀文件。
可以寫文件了,讀文件就好辦多了。讀文件需要用到read函數。其參數和write
大致相同,read(const char * ch, int size)。要把內容讀到int類型變數中同樣涉及到一個類型轉換的問題。和寫文件一樣。int readInt; 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、對文件操作完畢後別忘了關閉文件。
『貳』 MFC下讀取STL文件 怎麼弄
用CFile這個類 任何類型的文件都可以讀,它有open、read、write等函數可以對文件進行操作,你可以具體查下這個類的用法 一般是先open某個文件,然後進行其它的操作即可