C 標準輸入輸出流

2021-08-28 15:55:03 字數 3323 閱讀 8244

一、 c++流的概念

在c++語言中,資料的輸入和輸出(簡寫為i/o)包括對標準輸入裝置鍵盤和標準輸

出裝置顯示器、對在外存磁碟上的檔案和對記憶體中指定的字串儲存空間(當然可

用該空間儲存任何資訊)進行輸入輸出這三個方面。對標準輸入裝置和標準輸出設

備的輸入輸出簡稱為標準i/o,對在外存磁碟上檔案的輸入輸出簡稱為檔案i/o,對

記憶體中指定的字串儲存空間的輸入輸出簡稱為串i/o。

c++語言系統為實現資料的輸入和輸出定義了乙個龐大的類庫,它包括的類主要有ios,istream,ostream,iostream,ifstream,ofstream,fstream,istrstream,ostrs

tream,strstream等,其中ios為根基類,其餘都是它的直接或間接派生類。

ios為根基類,它直接派生四個類:輸入流類istream、輸出流類ostream、檔案流

基類fstreambase和字串流基類strstreambase,輸入檔案流類同時繼承了輸入流

類和檔案流基類(當然對於根基類是間接繼承),輸出檔案流類ofstream同時繼承了輸出流類和檔案流基類,輸入字串流類istrstream同時繼承了輸入流類和字串流基類,輸出字串流類ostrstream同時繼承了輸出流類和字串流基類,輸入輸出流類iostream同時繼承了輸入流類和輸出流類,輸入輸出檔案流類fstream同時繼承了輸入輸出流類和檔案流基類,輸入輸出字串流類strstream同時繼承了輸入輸出流類和字串流基類。

「流」就是「流動」,是物質從一處向另一處流動的過程。c++流是指資訊從外部輸入裝置(如鍵盤和磁碟)向計算機內部(即記憶體)輸入和從記憶體向外部輸出裝置(如顯示器和磁碟)輸出的過程,這種輸入輸出過程被形象地比喻為「流」。為了實現資訊的內外流動,c++系統定義了i/o類庫,其中的每乙個類都稱作相應的流或流類,用以完成某一方面的功能。根據乙個流類定義的物件也時常被稱為流。如根據檔案流類fstream定義的乙個物件fio,可稱作為fio流或fio檔案流,用它可以同磁碟上乙個檔案相聯絡,實現對該檔案的輸入和輸出,fio就等同於與之相聯絡的檔案。

c++系統中的i/o類庫,其所有類被包含在iostream.h,fstream.h和strstrea.h這三個系統標頭檔案中,各標頭檔案包含的類如下:

iostream.h包含有:ios, iostream, istream, ostream, iostream_withassign,

istream_withassign, ostream_withassign等。

fstream.h包含有:fstream, ifstream, ofstream和fstreambase,以及iostream.h

中的所有類。

strstrea.h包含有:strstream, istrstream, ostrstream和strstreambase,以及

iostream.h中的所有類。

在乙個程式或乙個編譯單元(即乙個程式檔案)中當需要進行標準i/o操作時,則必須包含標頭檔案iostream.h,當需要進行檔案i/o操作時,則必須包含標頭檔案fstream.h,同樣,當需要進行串i/o操作時,則必須包含標頭檔案strstrea.h。在乙個程式或編譯單元中包含乙個標頭檔案的命令格式為「#include《頭檔名》」,當然若標頭檔案是使用者建立的,則頭檔名的兩側不是使用尖括號,而是使用雙引號。當系統編譯乙個c++檔案對#include命令進行處理時,是把該命令中指定的檔案中的全部內容嵌入到該命令的位置,然後再編譯整個c++檔案生成相應的目標**檔案。

c++不僅定義有現成的i/o類庫供使用者使用,而且還為使用者進行標準i/o操作定義了四個類物件,它們分別是cin,cout,cerr和clog,其中cin為istream_withassign流類的物件,代表標準輸入裝置鍵盤,也稱為cin流或標準輸入流,後三個為ostream_withassign流類的物件,cout代表標準輸出裝置顯示器,也稱為cout流或標準輸出流,cerr和clog含義相同,均代表錯誤資訊輸出裝置顯示器。因此當進行鍵盤輸入時使用cin流,當進行顯示器輸出時使用cout流,當進行錯誤資訊輸出時使用cerr或clog。

在istream輸入流類中定義有對右移操作符》過載的一組公用成員函式,函式的具體宣告格式為:

istream& operator>>(簡單型別識別符號&);

簡單型別識別符號可以為char, signed char, unsigned char, short, unsigned short, int, unsigned int, long, unsigned long, float, double, long double, char*, signed char*, unsigned char*之中的任何一種,對於每一種型別都對應著乙個右移操作符過載函式。由於右移操作符過載用於給變數輸入資料的操作,所以又稱為提取操作符,即從流中提取出資料賦給變數。

當系統執行cin>>x操作時,將根據實參x的型別呼叫相應的提取操作符過載函式,把x引用傳送給對應的形參,接著從鍵盤的輸入中讀入乙個值並賦給x(因形參是x的別名)後,返回cin流,以便繼續使用提取操作符為下乙個變數輸入資料。

當從鍵盤上輸入資料時,只有當輸入完資料並按下回車鍵後,系統才把該行資料存入到鍵盤緩衝區,供cin流順序讀取給變數。還有,從鍵盤上輸入的每個資料之間必須用空格或回車符分開,因為cin為乙個變數讀入資料時是以空格或回車符作為其結束標誌的。

當cin>>x操作中的x為字元指標型別時,則要求從鍵盤的輸入中讀取乙個字串,並把它賦值給x所指向的儲存空間中,若x沒有事先指向乙個允許寫入資訊的儲存空間,則無法完成輸入操作。另外從鍵盤上輸入的字串,其兩邊不能帶有雙引號定界符,若帶有只作為雙引號字元看待。對於輸入的字元也是如此,不能帶有單引號定界符。

在ostream輸出流類中定義有對左移操作符《過載的一組公用成員函式,函式的具體宣告格式為:

ostream& operator<<(簡單型別識別符號);

簡單型別識別符號除了與在istream流類中宣告右移操作符過載函式給出的所有簡單型別識別符號相同以外,還增加乙個void* 型別,用於輸出任何指標(但不能是字元指標,因為它將被作為字串處理,即輸出所指向儲存空間中儲存的乙個字串)的值。由於左移操作符過載用於向流中輸出表示式的值,所以又稱為插入操作符。如當輸出流是cout時,則就把表示式的值插入到顯示器上,即輸出到顯示器顯示出來。

當系統執行cout《二、 輸入輸出格式控制

程式2:

#include

void main()

@"char ch=' ';

int x;

while(ch!='@')

sin.get(ch);

//從sin流中讀入下乙個字元

}sout<<'@'

cout

ab38+56,46*55-23/ad663,wer40ff:dy@

38 56 46 55 23 663 40 63 44 @

c 標準輸入 輸出流

標準輸出流是流向標準輸出裝置 顯示器 的資料,標準輸入流是從標準輸入裝置 鍵盤 流向程式的資料。在標頭檔案iostream.h中定義了cin cout cerr clog 4個流物件,cin是輸入流,cout cerr clog是輸出流。一 四個流物件 cin 標準輸入流,其標準輸入裝置是鍵盤。co...

python 標準輸入輸出流

python 中有三種標準輸入輸出流 sys.stdin sys.stdout sys.error f open 1.txt r fileno方法可返回整數的底層實現使用請求從作業系統的i o操作的檔案描述符 可理解為是第幾個開啟的檔案 f.fileno 3 一般開啟的第乙個檔案是第三個,前3個 從...

C 輸入 輸出流

低階i o功能 如無格式的i o 通常指大量的位元組在裝置到記憶體或記憶體到裝置的簡單傳輸。高階i o功能 格式化i o 它將位元組組合成有意義的單元,如資料型別。對於大容量檔案的處理,使用無格式的i o可獲得最佳的效能。不帶引數值成員函式get 從指定的流中讀取乙個字元 即使是空格 並返回該字元作...