C C 中的檔案操作 2

2022-01-28 21:41:20 字數 1650 閱讀 3010

c++檔案操作。

c++中引入了stream,相關的標頭檔案,支援檔案輸入與輸出,還有兩個和,分別支援檔案讀入和寫入。

內容的讀取與寫入

c++引入了流操作,流操作符》和《用來從檔案讀取內容或把內容寫入檔案。

istream& operator>> (type &val);與fscanf對應,格式化的讀取內容,格式由值的type確定。

讀取字串的時候,會讀到空格或者換行結束。

也有其它格式控制的函式,如hex以十六進製制讀取,dec以十進位制讀取,skipws跳過空白,等。

成員函式get,可以讀取單個字元,也可以讀取字串,並指定讀取的長度,終止符號(一般是'\n'),也可以讀到stream裡面。

成員函式getline,讀取一行內容到字串,指定字串長度(包括字串終止符號'\0'),也可以指定終止符號。

成員函式ignore(streamsize n=1,int delim=eof),忽略n個字元,或者到delim結束。

還有read和readsome也可以讀取輸入。

ostream& operator<< (type val);流輸出,一直覺得c++的輸出格式控制沒有c的printf方便,也就一直沒有好好看看c++是怎麼控制輸出個好似的。這次還是好好看看吧。

hex/dec/oct 按16/10/8進製輸出

[no]showbase,(不)顯示基數字首,

[no]showpoint,(不)顯示小數點,

[no]showpos,(不)顯示正號

fixed,定點輸出

scientific,科學記數法

left/internal/right,左/右對齊

flush,立即輸出

[no]unitbuf,(不)單元輸出,

[no]uppercase,全大寫輸出,

setw,設定寬度

也可以通過成員函式setf來設定輸出格式。

輸出也可以用put,write等成員函式,《應該就夠用了,暫時就不看了。

put,輸出單個字元,

write(char* buf,int size),寫資料塊。

關於指標在檔案中的位置,還是看看吧。

streampos tellp()得到當前位置,

seekp(streampos pos),設定當前位置,設定到檔案頭,pos=0,

seekp(streamoffset offset,ios_base::seek_dir),以相對位置設定當前位置,參考可以是ios_base::beg/cur/end。

在c中,ftell/fseek/fsetpos/rewind也是跟指標在檔案中的位置相關的函式。

檔案輸入輸出重定向

與c中重定向不同,c++中檔案是stream物件,不可以直接賦值給stdin,也沒有reopen函式,而是cin或者cout使用的rdbuf()成員函式。如果檔案重定向結束,需要將cin還原為stdin,那麼可以在重定向之前,備份cin的rdbuf,參考

示例**如下:

#include #include 

#include

using

namespace

std;

intmain()

cin.rdbuf(backup);

return0;

}

至此,檔案操作基本結束。

C C 檔案操作 2

ofstream fs binary ios binary ofstream fs character.txt int i 32765 fs 無論以二進位制檔案模式開啟還是以文字模式開啟,檔案中都是儲存著文字!似乎c c 中的binary 模式不起作用!後來查閱資料才知道 要想在c c 中將資料以二...

C C 中的檔案操作

1.fopen fopen的原型是 file fopen const char filename,const char mode fopen實現三個功能 為使用而開啟乙個流 把乙個檔案和此流相連線 給此流返回乙個file指標 引數filename指向要開啟的檔名,mode表示開啟狀態的字串,其取值如...

C C 的檔案讀寫操作

檔案讀寫是經常用到的,在c c 中關於檔案讀寫的函式也很毒,最近在使用檔案讀寫的時候就發現一些問題,總結一下 1.fgetc 函式原型是 int fgetc file stream 該函式每一次從檔案中讀取乙個字元,對於空格和回車都可以讀取!source.txt 檔案內容為 thank you ve...