C 學習摘要之九 C 流和檔案流

2021-08-26 00:25:12 字數 2738 閱讀 8953

在程式設計 中,資料輸入/輸出(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《資料1《資料2<

其中,「<

在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 流和檔案操作

c 中輸入輸出操作使用流來完成,將輸出輸入的操作稱為流類,實現流類的庫為流類庫流類庫標頭檔案 includec 常用流類派生關係 標頭檔案 include檔案開啟方式 開啟方式 說明ios in 讀檔案方式開啟檔案,檔案不存在開啟失敗 ios out 寫檔案方式開啟檔案,檔案不存在久建立了再開啟 i...

C 之輸入輸出流和檔案傳輸流

ios是抽象基類,由它派生出istream類和ostream類,iostream類支援輸入輸出操作,iostream類是從istream類和ostream類通過多重繼承而派生的類 類ifstream繼承了類istream,類ofstream繼承了類ostream,類fstream繼承了 類iostr...

C 學習筆記之檔案和流

檔案 普通檔案 二進位制檔案 文字檔案 輸入輸出裝置 鍵盤 顯示器 印表機等 開啟乙個已存在的檔案或建立並開啟乙個新檔案 file fopen const char filename,const char mode filename 路徑及檔名 mode 開啟方式 檔案ex16 1.cpp incl...