文件操作之 C++版本

文件操作C++

頭文件

//標準輸入輸出流

#include

//派生自iostream,包括ifstream和ofstream

#include

相關類

ofstream

寫操作(輸出)的文件類 (由ostream引申而來)

ifstream

讀操作(輸入)的文件類(由istream引申而來)

fstream

可同時讀寫操作的文件類 (由iostream引申而來)

打開文件

對這些類的一個對象所做的第一個操作通常就是將它和一個真正的文件聯繫起來,也就是說打開一個文件。被打開的文件在程序中由一個流對象(stream object)來表示 (這些類的一個實例) ,而對這個流對象所做的任何輸入輸出操作實際就是對該文件所做的操作

void open (const char * filename, openmode mode);

或者利用構造函數打開文件

默認打開方式:

ofstream ios::out | ios::trunc

ifstream ios::in

fstream ios::in | ios::out

打開模式 說明
ios::in 爲輸入(讀)而打開文件
ios::out 爲輸出(寫)而打開文件
ios::ate 打開文件時,定位到文件尾
ios::app 所有輸出附加在文件末尾
ios::trunc 如果文件已存在則先刪除該文件
ios::binary 二進制方式
ios::nocreate 不建立文件,所以文件不存在時打開失敗
ios::noreplace 不覆蓋文件,所以打開文件時如果文件存在失敗

文件相關判斷:

is_open() 來檢查一個文件是否已經被順利的打開
void bad() 如果在讀寫過程中出錯,返回 true
void fail() 除了與bad() 同樣的情況下會返回 true 以外,加上格式錯誤時也返回true
eof() 如果讀文件到達文件末尾,返回true
good() 如果調用以上任何一個函數返回true 的話,此函數返回 false
clear() 要想重置以上成員函數所檢查的狀態標誌,你可以使用成員函數,沒有參數

文件操作

文本文件

可以用重載操作符:cout,cin

獲得和設置流指針:

tellg() 用於得到輸入流"get"位置
tellp() 用於得到輸出流"put"位置
seekg ( off_type offset, seekdir direction );
seekp ( off_type offset, seekdir direction );

direction參數:

ios::beg 從流開始位置計算的位移
ios::cur 從流指針當前位置開始計算的位移
ios::end 從流末尾處開始計算的位移

寫文件數據同步

  1. 關閉文件
  2. buffer滿了
  3. 控制符明確指明,例如:flush,endl。
  4. 明確調用函數sync(),同步函數。無參數。這個函數返回一個int 值,等於-1 表示流沒有聯繫的緩存或操作失敗

塊讀寫

write(char * buffer, streamsize size); //返回寫入字節數

read(char * buffer, streamsize size); //返回讀取字節數

getline()可以忽略空格,(cin,cout遇到空格結束)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章