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函式使用乙個檔名作為唯一的強制引數,然後返回乙個檔案物件。模式 ...