程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> 關於C++ >> C++學習摘要之九:C++流和文件流

C++學習摘要之九:C++流和文件流

編輯:關於C++

在程序設計中,數據輸入/輸出(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.文件流及其有關的類

文件是存儲在磁盤、磁帶等 外部設備上的數據的集合,每一個文件都必須有一個唯一的文件名稱。在使用文 件前必須首先打開文件,使用完畢後必須關閉文件。對文件的操作是由文件流類 完成的。文件流類在流與文件之間建立連接。下圖是與文件操作相關的類及其繼 承關系。

C++學習摘要之九:C++流和文件流

圖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

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved