STL檔案讀寫基礎

2021-09-06 08:01:00 字數 1713 閱讀 5823

stl中對檔案讀寫的函式在標頭檔案fstream中定義,它的基本物件模型如下:

其中包含三個物件ifstrea、ofstream和fstream,分別對檔案提供唯讀、只寫、讀寫功能,從其物件繼承關係也可以看出這一點。下面就簡單的介紹下基本的檔案方法

開啟檔案

開啟檔案一般有兩種方式:

1、在建構函式中開啟

ifstreaminput("r:\\3.txt", ios::in | ios::binary);

2、通過open函式開啟

ofstreamoutput;

output.open("r:\\3.txt", ios::out | ios::binary);

檢查是否開啟成功

可以通過good函式檢查檔案是否開啟成功:

if(!input.good())

這個good函式也可以去掉,直接檢查steam是否為真(這樣可讀性不好,不建議,但許多歷史**喜歡這麼寫,還是應該學習一下)。

if(!input)

定位和獲取當前位置

有的時候,我們需要對檔案進行隨機訪問,如連線兩個檔案的時候就要定位到檔案的末尾。在stl中可以通過stream物件的seekg實現這一功能。與之相對的就是獲取當前位置,函式為tellg,如下**演示了利用這兩個函式獲取檔案長度。

input.seekg (0, ios::end);

intlength = input.tellg();

tellg函式比較簡單,沒有引數,直接返回當前位置。而seekg有兩個引數:第乙個引數是偏移量,可以為負數;第二個引數則是相對位置,可以選取ios::beg

(begin

)、ios::end

(end

)、ios::cur

(current

)三個值,這個引數可以省略,省略的時候是取的ios::beg

,從檔案頭定位。

關閉檔案

關閉檔案有兩個方法:

呼叫close方法顯式關閉

物件刪除的時候隱式關閉

具體使用哪個這個看個人喜好了,就我個人而言,我一般喜歡在建構函式中開啟檔案,不習慣呼叫open函式,因此也比較傾向於隱式關閉,不呼叫close函式。

讀寫檔案

下面我們就以乙個檔案拷貝為例簡單的介紹下讀寫的方式:

1、傳統的緩衝區讀寫

charbuf[1024];

while(!input.

eof())

這裡主要用到了三個函式:read函式為讀,write函式寫,eof檢查是否讀取到了檔案結尾。

2、利用string逐行讀寫

stringline;

while(std::

getline(input, line))

output

<

這裡用了getline行數從流裡每次讀寫一行,用 << 運算子將內容寫入流,不過這種方式僅僅適合讀寫文字檔案。

3、流方式讀寫

output

<

這個方式非常簡單,只用了一行**就可以實現:用rdbuf函式獲取讀緩衝區,用 << 運算子在兩個流物件之間建立管道。

python基礎 檔案讀寫

1.讀寫方式 f open text r encoding utf 8 2.寫讀方式 f open text w encoding utf 8 3.追加方式 f open text a encoding utf 8 4.讀方式 f open text r encoding utf 8 5.寫方式 f...

python基礎 讀寫檔案

import os print os.getcwd import os os.chdir 你想要的路徑 import os os.makedirs 你想要的檔案目錄 import os print os.path.abspath demo import os print os.path.isabs ...

python檔案讀寫(基礎)

1.開啟檔案 讀寫檔案是常見的io操作,python內建了讀寫檔案的函式,方便了檔案的io操作。檔案讀寫之前需要開啟檔案,確定檔案的讀寫模式。open函式用來開啟檔案,語法如下 open name,mode,buffering open函式使用乙個檔名作為唯一的強制引數,然後返回乙個檔案物件。模式 ...