圖 1表1 i/o類庫中的常用流類 類名
作用在哪個標頭檔案中宣告
ios抽象基類
iostream
istream
ostream
iostream
通用輸入流和其他輸入流的基類
通用輸出流和其他輸出流的基類
通用輸入輸出流和其他輸入輸出流的基類
iostream
iostream
iostream
ifstream
ofstream
fstream
輸入檔案流類
輸出檔案流類
輸入輸出檔案流類
fstream
fstream
fstream
istrstream
ostrstream
strstream
輸入字串流類
輸出字串流類
輸入輸出字串流類
strstream
strstream
strstream
ios是抽象基類,由它派生出istream類和ostream類,兩個類名中第1個字母i和o分別代表輸入(input)和輸出(output)。istream類支援輸入操作,ostream類支援輸出操作, iostream類支援輸入輸出操作。iostream類是從istream類和ostream類通過多重繼承而派生的類。其繼承層次見圖1表示。
c++對檔案的輸入輸出需要用ifstrcam和ofstream類,兩個類名中第1個字母i和o分別代表輸入和輸出,第2個字母f代表檔案(file)。ifstream支援對檔案的輸入操作, ofstream支援對檔案的輸出操作。類ifstream繼承了類istream,類ofstream繼承了類ostream,類fstream繼承了類iostream。見圖 2。
圖 2i/o類庫中還有其他一些類,但是對於一般使用者來說,以上這些已能滿足需要了。如果想深入了解類庫的內容和使用,可參閱所用的c++系統的類庫手冊。
iostream類庫中不同的類的宣告被放在不同的標頭檔案中,使用者在自己的程式中用#include命令包含了有關的標頭檔案就相當於在本程式中宣告了所需要用到的類。可以換 —種說法:標頭檔案是程式與類庫的介面,iostream類庫的介面分別由不同的標頭檔案來實現。常用的有
在 iostream 標頭檔案中定義的類有 ios,istream,ostream,iostream,istream _withassign, ostream_withassign,iostream_withassign 等。
iostream.h包含了對輸入輸出流進行操作所需的基本資訊。因此大多數c++程式都包括iostream.h。在iostream.h標頭檔案中不僅定義了有關的類,還定義了4種流物件, 見表2。
表2 檔案中定義的4種流物件 物件
含義對應裝置
對應的類
c語言中相應的標準檔案
cin標準輸入流
鍵盤istream_withassign
stdin
cout
標準輸出流
螢幕ostream_withassign
stdout
cerr
標準錯誤流
螢幕ostream_withassign
stderr
clog
標準錯誤流
螢幕ostream_withassign
stderr
在iostream標頭檔案中定義以上4個流物件用以下的形式(以cout為例):
ostream cout ( stdout);
在定義cout為ostream流類物件時,把標準輸出裝置stdout作為引數,這樣它就與標準輸出裝置(顯示器)聯絡起來,如果有
cout <<3;
就會在顯示器的螢幕上輸出3。
「<>」本來在c++中是被定義為左位移運算子和右位移運算子的,由於在iostream標頭檔案中對它們進行了過載,使它們能用作標準型別資料的輸入和輸出運算子。所以,在用它們的程式中必須用#include命令把iostream包含到程式中。
#include
在istream和ostream類(這兩個類都是在iostream中宣告的)中分別有一組成員函式對位移運算子「<>」進行過載,以便能用它輸入或輸出各種標準資料型別的資料。對於不同的標準資料型別要分別進行過載,如:
ostream operator << (im ); //用於向輸出流插入乙個int資料
ostream operator << (float ); //用於向輸出流插入乙個float資料
ostream operator << (char); //用於向輸出流插入乙個char資料
ostream operator << (char * ); //用於向輸出流插入乙個字串資料
等。如果在程式中有下面的表示式:
cout<
實際上相當於:
cout.operator <
"c ++"的值是其首位元組位址,是字元型指標(char * )型別,因此選擇呼叫上面最後乙個運算子過載函式,通過過載函式的函式體,將字串插入到cout流中,函式返回流物件cout。
在istream類中已將運算子「>> 」過載為對以下標準型別的提取運算子:char, signed char, unsigned char, short, unsigned short, int, unsigned int,long, unsigned long, float, double, long double, char * , signed char *, unsigned char * 等。
在ostream類中將「<
如果想將「<>」用於自己宣告的型別的資料,就不能簡單地採用包含 iostream標頭檔案來解決,必須自己對「<>」進行過載。
怎樣理解運算子「<>」的作用呢?有乙個簡單而形象的方法:它們指出了資料移動的方向,例如
>>a
箭頭方向表示把資料放人a中。而
<
箭頭方向表示從a中拿出資料。
C 輸入輸出
一 標準輸入函式cin 不知道說它是個函式對還是不對,它是代表標準的輸入裝置 鍵盤。他是屬於流的,他的用法和流的用法是一樣的。也就是 cin 變數 小小的說明一下,輸入多個變數可以寫在一行,如 cin x y z 這樣寫不是不允許,而是不好看,如果是不同的變數型別,那就更是沒頭沒腦了。除了你,人家是...
C 輸入輸出
c語言不提供輸入輸出語句,輸入輸出操作有函式來實現。c的標準庫函式中提供了許多輸入輸出函式,如printf scanf 等,使用時需要新增相應的標頭檔案 scanf d num 逗號前為控制語句,後半部分為變數的位址。當中 d是輸入格式控制字串 scanf 函式在接受輸入資料是預設不採集空格,回車,...
C 輸入輸出
c 中的一些常用輸入輸出 include include include include using namespace std void win io 由控制台輸入 void file io 檔案進行輸入 in file.close void file io 2 in file.close in ...