C++的iostream標(biāo)準(zhǔn)庫(kù)介紹(1)

2005-04-05 14:12  出處:PConline  作者:管寧  責(zé)任編輯:xietaoming 

  我們從一開始就一直在利用C++的輸入輸出在做著各種練習(xí),輸入輸出是由iostream庫(kù)提供的,所以討論此標(biāo)準(zhǔn)庫(kù)是有必要的,它與C語(yǔ)言的stdio庫(kù)不同,它從一開始就是用多重繼承與虛擬繼承實(shí)現(xiàn)的面向?qū)ο蟮膶哟谓Y(jié)構(gòu),作為一個(gè)c++的標(biāo)準(zhǔn)庫(kù)組件提供給程序員使用。

  iostream為內(nèi)置類型類型對(duì)象提供了輸入輸出支持,同時(shí)也支持文件的輸入輸出,類的設(shè)計(jì)者可以通過對(duì)iostream庫(kù)的擴(kuò)展,來(lái)支持自定義類型的輸入輸出操作。

  為什么說(shuō)要擴(kuò)展才能提供支持呢?我們來(lái)一個(gè)示例。

#include <stdio.h> 
#include <iostream
using namespace std;     
 
class Test 

    public
        Test(int a=0,int b=0) 
        { 
            Test::a=a; 
            Test::b=b; 
        } 
    int a; 
    int b; 
}; 
int main() 

    Test t(100,50); 
    printf("%???",t);//不明確的輸出格式 
    scanf("%???",t);//不明確的輸入格式 
    cout<<t<<endl;//同樣不夠明確 
    cin>>t;//同樣不夠明確 
    system("pause"); 
}

  由于自定義類的特殊性,在上面的代碼中,無(wú)論你使用c風(fēng)格的輸入輸出,或者是c++的輸入輸出都不是不明確的一個(gè)表示,由于c語(yǔ)言沒有運(yùn)算符重載機(jī)制,導(dǎo)致stdio庫(kù)的不可擴(kuò)充性,讓我們無(wú)法讓printf()和scanf()支持對(duì)自定義類對(duì)象的擴(kuò)充識(shí)別,而c++是可以通過運(yùn)算符重載機(jī)制擴(kuò)充iostream庫(kù)的,使系統(tǒng)能能夠識(shí)別自定義類型,從而讓輸入輸出明確的知道他們?cè)摳墒裁矗袷绞鞘裁础?

  在上例中我們之所以用printf與cout進(jìn)行對(duì)比目的是為了告訴大家,C與C++處理輸入輸出的根本不同,我們從c遠(yuǎn)的輸入輸出可以很明顯看出是函數(shù)調(diào)用方式,而c++的則是對(duì)象模式,cout和cin是ostream類和istream類的對(duì)象。

  C++中的iostream庫(kù)主要包含下圖所示的幾個(gè)頭文件:

  我們所熟悉的輸入輸出操作分別是由istream(輸入流)和ostream(輸出流)這兩個(gè)類提供的,為了允許雙向的輸入/輸出,由istream和ostream派生出了iostream類。

  類的繼承關(guān)系見下圖:

鍵盤也能翻頁(yè),試試“← →”鍵
相關(guān)文章

相關(guān)軟件:

騰訊QQ2012
大小:52.93 MB 授權(quán):免費(fèi)
騰訊QQ2012
立即下載
騰訊QQ2013
大。49.32 MB 授權(quán):免費(fèi)
騰訊QQ2013
立即下載