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

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

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

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

  為什么說要擴(kuò)展才能提供支持呢?我們來一個示例。

#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"); 
}

  由于自定義類的特殊性,在上面的代碼中,無論你使用c風(fēng)格的輸入輸出,或者是c++的輸入輸出都不是不明確的一個表示,由于c語言沒有運算符重載機(jī)制,導(dǎo)致stdio庫的不可擴(kuò)充性,讓我們無法讓printf()和scanf()支持對自定義類對象的擴(kuò)充識別,而c++是可以通過運算符重載機(jī)制擴(kuò)充iostream庫的,使系統(tǒng)能能夠識別自定義類型,從而讓輸入輸出明確的知道他們該干什么,格式是什么。

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

  C++中的iostream庫主要包含下圖所示的幾個頭文件:

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

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

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

相關(guān)軟件:

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