C++文件操作學習

C++文件操作


文件流對象:#include<fstream>
ifstream:輸入流對象
ofstream:輸出文件流對象
fstream:輸入輸出文件流對象

ifstream file_in;
ofstream file_out;
fstream file_inout;

打開文件一(利用構造函數):
ofstream file_out(”c:\\...”,ios::out|ios::binary);//以二進制方式打開輸出文件
ifstream file_in(“c:\\...”,ios::in|ios::binary);//以二進制方式打開輸入文件

常用的文件流構造函數如下:
ifstream::ifstream(const char *,int=ios::in,int=filebuf::openprot);
ofstream::ofstream(const char *,int=ios::out,int=filebuf::openprot);
fstream::fstream(const char *,int,int=filebuf::openprot);

打開文件二(利用成員函數open()):
void::ifstream::open(const char*,int=ios::in);
void::ofstream::open(const char*,int=ios::out);
void::fstream::open(const char*,int);
路徑名一般要用完整的路徑名。如果文件在於exe文件相同的目錄中,則可以用相對路徑。
打開方式(以|組合起來):
ios::in  用於數據輸入,即讀文件
ios::out  用於數據輸出,即寫文件
ios::ate  文件打開後,將文件指針放置在文件尾部
ios::app  打開文件用於追加數據,文件指針始終指向文件尾部
ios::trunc 當打開文件已存在,則清除其內容,使之成爲空文件
ios::nocreate  如果文件不存在,則不建立任何文件,返回打開失敗信息
ios::noreplace 如果打開文件已存在,則不建立任何文件,返回錯誤消息
ios::binary   以二進制方式打開文件

用fail() 判斷文件打開是否成功,成功返回false,否則返回true。
文件操作完成之後,需要用close()來關閉文件。

文本文件輸入輸出:
向文本文件輸出數據(寫文件)
ofstream file_out(“c:\\text.txt”,ios::out);
一:使用插入操作符<<
原型:ostream& operator<<(C++標準類型 &);
file_out<<” A B C D E F G”<<endl;

二:調用成員函數put()
原型:ostream& put(char);
file_out.put(‘A’);
file_out.put(10); //\n的ASC碼值
 
從文本文件中讀出數據(讀文件)
ifstream file_in(“c:\\text.txt”,ios::in);
一:利用提取操作符>>
原型:istream & operator<<(C++標準類型&);
string s;
file_in>>s;
二:調用成員函數get()
原型:int get();//讀取字符,會讀出空格字符和換行符
      istream&get(char &c); //讀取一個字符到c中
三:調用成員函數getline()
原型:istream & getline(char *buffer,int len,char = “\n”);
      buffer爲讀字符串到buffer中
      len 爲讀字符串長度
      char = “\n” 默認爲當遇到換行符時,停止讀取

bool eof() 判斷文件指針是否指向文件末尾,是則返回true,否則爲false


二進制文件輸入輸出:
向二進制文件寫入數據利用流函數write()
原型:ostream& write(const char *buffer,int len);
buffer用於存儲需要寫入文件的內容  len爲需要寫入數據的長度

從二進制文件中讀入數據利用流函數read()
原型:istream & read(char buffer,int len);
buffer用於存儲讀出的數據 len爲需要讀取數據的長度


文件定位:
流類istream的成員函數 seekg(),用於把讀文件指針移到指定位置
原型 istream &seekg(long dis,seek_dir ref=ios::beg);
l流類ostream的成員函數seekp(),用於把寫文件指針移到指定位置
原型ostream&seekp(long dis,seek_dir ref =ios::beg);
dis是文件指針需要移動的字節數,當其爲正數時,向後移,爲負數,向前移
seek_dir是ios根基類中定義的枚舉變量,表示文件指針開始移動的基準位置,如下:
enum seek_dir{beg=0,cur=1,end=2};
其中ios::beg表示文件的開始位置,cur表示當前位置,end表示結束位置。

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