使用CStdioFile操作檔案

2021-06-07 00:46:03 字數 2503 閱讀 6892

檔案操作在vc程式設計中使用非常普遍,直接使用cfile對檔案進行操作比較繁瑣,使用繼承自cfile的cstdiofile類就要容易得多,用cstdiofile 來處理字串,是最簡單最好理解的的辦法。本文整理了網上大家使用的各種cstdiofile的操作方法,歸納如下:

1.開啟檔案:

file.open(filename, cfile::modecreate|cfile::modereadwrite|cfile::modenotruncate);

開啟檔案主要需要傳入兩個引數,filename——檔名;檔案開啟模式。

幾種比較常見的檔案開啟模式:

cfile::modecreate 以新建方式開啟,如果檔案不存在,新建;如果檔案已存在,把該檔案長度置零,即清除檔案原有內容。

cfile::modenotruncate 以追加方式開啟,如果檔案存在,開啟並且不將檔案長度置零,如果檔案不存在,會丟擲異常。一般與cfile::modecreate 一起使用,則檔案不存在時,新建乙個檔案;存在就進行追加操作。

cfile::modewrite 以只寫模式開啟

cfile::moderead 以唯讀模式開啟

cfile::modereadwrite 以讀寫模式開啟

2.讀檔案:

virtual lptstr readstring( lptstr lpsz, uint nmax ) throw( cfileexception );

bool readstring(cstring& rstring) throw( cfileexception );

cstdiofile的readstring方法可以逐行從檔案中讀取內容,該例將檔案逐行讀出,寫入到str字串裡。

如果需要讀出檔案所有內容,可以用下面的方法:

while(file.readstring(str))  

這裡用」\r\n」來為字串加上換行。

3.寫入檔案

file.writestring(str);  

這裡很值得注意一下,cstdiofile類沒有提供逐行寫入的方法,只有自己在檔案內容行的末尾增加"\n"或者"\r\n"實現換行的功能,如果檔案的開啟模式設定了cfile::modenotruncate,那麼字串將以追加的形式寫入,並且是從檔案指標現在所處位置寫起。

比如:?

12

3

4

5

6

7

8

9

10

11

12

13

14

15

cstring filename("test.txt"),str("");

cstdiofile file;

// 建立檔案「test.txt」,寫入"1234567890"

file.open(filename, cfile::modecreate|cfile::modewrite);

file.writestring("1234567890");

file.close();

// 追寫入「abc」

file.open(filename, cfile::modecreate|cfile::modenotruncate|cfile::modewrite);

file.writestring("abc");

file.close();

// 讀出第一行字串,並用訊息框彈出

file.open(filename,cfile::moderead);

file.readstring(str);

file.close();

messagebox(str);

最終將彈出

abc4567890

那麼如果我們其實是想寫入在檔案末尾,即彈出

1234567890abc,那該如何?

只要在file.writestring("abc");前加入一句 file.seektoend();。這一句的作用在於將檔案指標移動到檔案末尾。

4.關閉檔案

同cfile類得例項一樣,使用完cstdiofile記得呼叫close函式將其關閉。

file.close();  

使用CStdioFile讀寫檔案

cstdiofile類的宣告儲存在afx.h標頭檔案中。cstdiofile類繼承自cfile類,cstdiofile物件表示乙個用執行時的函式fopen開啟的c執行時的流式檔案。流式檔案是被緩衝的,而且可以以文字方式 預設 或者二進位制方式開啟。cstdiofile類不支援cfile類中的dupl...

使用CStdioFile 讀寫UNICODE文件

一 寫文件 1 建立文件並寫入內容 cpp view plain copy cstring filepath l c unicode.txt cstdiofile wfile if wfile.open filepath,cfile modecreate cfile modewrite cfile ...

使用sed操作檔案內容

sed擷取檔案 sed是linux中非常好用的小工具,可以方便的對檔案進行操作,本次使用sed加 n 引數來完成對檔案某幾行的擷取 sed n 1,6p filename newfilename 上述sed命令就可以擷取檔案中的1到6行然後輸出到新檔案中。sed替換檔案內字元 使用命令 sed i ...