在程序設計中,數據輸入/輸出(I/O)操作是必不可少的,C++語言的數據輸 入/輸出操作是通過I/O流庫來實現的。C++中把數據之間的傳輸操作稱為流,流既 可以表示數據從內存傳送到某個載體或設備中,即輸出流,也可以表示數據從某 個載體或設備傳送到內存緩沖區變量中,即輸入流。在進行I/O操作時,首先是打 開操作,使流和文件發生聯系,建立聯系後的文件才允許數據流入和流出,輸入 或輸出結束後,使用關閉操作使文件與流斷開聯系。
標准輸入輸出流 (cout、cin)在使用過程中,只要在程序的開頭嵌入相應的頭文件 “iostream.h”即可。
文件的打開和關閉是通過使用fstream 類的成員函數open和close來實現的,fstream類用來對文件流進行操作,fstream 類的頭文件是fstream.h.
1.數據的輸出cout
cout是標准輸出設備 即顯示器(默認設備)連接的預定義輸出流。C++語言的插入運算符 “<<”向輸出流發送字符,cout是數據的目的地,插入運算符 “<<”把數據傳送到cout.
輸出流對象cout輸出數據的 語句格式為:
cout<<數據1<<數據 2<<……<<數據n;
其中, “<<”是輸出操作符,用於向cout輸出流中插入數據。
在cout中還可以使用流控制符控制數據的輸出格式,但要注意使用這些流控制符 時,要在程序的開始部分嵌入頭文件“iomanip.h”。
常用的 流控制符及其功能如下表所示:
表1 I/O流的常用控制符
2.數據的輸入cin
cin是與標准輸入設備即鍵盤(默認設備)連接的預 定義輸入流。它從輸入流中取出數據,數據從輸入提起運算符 “>>”處流進程序。
輸入流對象cin輸入數據的語句格 式為:
cin>>變量名1>>變量名 2>>……>>變量名n;
其中, “>>”是輸入操作符,用於從cin輸入流中取得數據,並將取得 的數據傳送給其後的變量,從而完成輸入數據的功能。
注意: “>>”操作符後除了變量名外不得有其他數字、字符串,否則 系統會報錯。
3.文件流及其有關的類
文件是存儲在磁盤、磁帶等 外部設備上的數據的集合,每一個文件都必須有一個唯一的文件名稱。在使用文 件前必須首先打開文件,使用完畢後必須關閉文件。對文件的操作是由文件流類 完成的。文件流類在流與文件之間建立連接。下圖是與文件操作相關的類及其繼 承關系。
圖1 幾個與文件處理相關的類及其繼承關系結構圖
下表是常用 的I/O流類庫的說明,以及在編程中需要包含到程序中的頭文件。
表2 常 用I/O流類庫說明
4.文件的打開與關閉
對文件的操作是由文件流類完成的。文件流類在 流與文件間建立連接。由於文件流分為三種:文件輸入流、文件輸出流、文件輸 入/輸出流,所以相應的必須將文件流說明為ifstream、ofstream和fstream類的 對象,然後利用文件流的對象對文件進行操作。
對文件的操作過程可按照 一下四步進行:即定義文件流類的對象、打開文件、堆文件進行讀寫操作、關閉 文件,下面分別進行介紹。
(1)定義文件流對象
利用文件流類可 以定義文件流類對象,方法是:
文件流類 對象名;
如:
ifstream ifile; //定義一個文件輸入流對象
ofstream ofile; //定義一個文件輸出流對象
fstream iofile; //定義一個文件輸出/輸入 流對象
(2)打開文件
定義了文件流對象後,就可以利用其成員函 數open()打開需要操作的文件,該成員函數的函數原型為:
void open (const unsigned char *filename,int mode,int access=filebuf:openprot );
其中:filename是一個字符型指針,指定了要打開的文件名;mode指 定了文件的打開方式,其值如下表所示;access指定了文件的系統屬性,其取值 為:
0 一般文件
1 只讀文件 :
2 隱藏文件
3 系統文件
表3 在ios類中定義的文件打開方式
說明:
1)在實際使用過程中,可以根據需要將以上打開文件的方式用 “|”組合起來。如:
ios::in|ios::out 表示以讀/寫方式打開文件
ios::in|ios:: binary 表示以二進制讀方式打開文件
ios:: out|ios:: binary 表示以二進制寫方式打開文件
ios::in|ios::out|ios::binary 表示以二進制讀/寫 方式打開文件
2)如果未指明以二進制方式打開文件,則默認是以文本方 式打開文件。
3)對於ifstream流,mode參數的默認值為ios::in,對於 ofstream流,mode的默認值為ios::out.
(3)文件的關閉
在文 件操作結束(即讀、寫完畢)時應及時調用成員函數close()來關閉文件。該函 數比較簡單,沒有參數和返回值。
利用對象和相應的成員函數對文件進行 讀寫操作,我們將單獨介紹。
5.文件的讀寫操作
在打開文件後就 可以對文件進行讀寫操作了。從一個文件中讀出數據,可以使用文件流類的get、 getline、read成員函數以及運算符“>>”;而向一個文件寫入 數據,可以使用其put、write函數以及插入符“<<”,如下表 所示:
表4 文件流類的文件操作成員函數
順序文件操作:這種操作方式只能從文件的開始處依次順序讀寫文件內容,而 不能任意讀寫文件內容。
從一個文件中讀出數據,可以使用get、getline 、read成員函數以及運算符“>>”;而向一個文件寫入數據, 可以使用put、write成員函數以及插入符“<<”。
相關文章
C++學習摘要之二:構造函數和析構函數
http://www.bianceng.cn/Programming/cplus/200911/12302.htm
C++學習摘要之一:類和對象
http://www.bianceng.cn/Programming/cplus/200911/12301.htm