回覆列表
  • 1 # 白色秋天品茗似水浮生

    要讀取檔案必須包含

    可以使用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個步驟就完成了對檔案的讀寫操作。文字檔案的操作是相同的,比二進位制檔案還要簡單。

  • 中秋節和大豐收的關聯?
  • 為什麼有的人比較注重外貌?