主題 | 概要 |
---|---|
C++基礎 | C++的I/O部分概括、總結 |
編輯 | 時間 |
新建 | 20160826 |
序號 | 參考資料 |
1 | C++ Primer Plus |
2 |
相對與JAVA,C++的輸入輸出更加整潔,沒有這麼多裝飾器,更加易於使用和理解。
流和緩衝區
C++程序把輸入和輸出看作字節流。輸入時,程序從輸入流中抽取字節;輸出時,程序將字節插入到輸出流中。流充當了程序和流源或流目標之間的橋樑。也使得程序使用相同的方式處理輸入和輸出,獨立於具體的來源和去向。
管理輸入包含兩步:
將流與輸入去向的程序關聯起來;
將流與文件連接起來;
同樣,管理輸出包含兩步:
將輸出流連接到程序;
將輸出目標與流關聯;
流的抽像圖如下:
通常,爲了提高效率,在流的一端爲引進一塊緩衝區,作爲信息從設備傳輸到程序或程序傳輸到設備時的臨時存儲工具。
C++ iostream文件中通過一系列的類來管理流和緩衝區,其中的一些類:
streambuf類爲緩衝區提供了內存,並提供了用於填充緩衝區、訪問緩衝區內存、刷新緩衝區和管理緩衝區內存的類方法;
ios_base 類表示流的一般特徵,如是否可讀取、 是二進制流還是文本流等;
ios 類 基於ios_base, 其中每括了一個指向streambuf對象的指針;
ostream類 是從ios類派生而來的,提供了輸出方法;
istream類也是從ios類派生而來的,提供了輸入方法;
iostream類是基於istream和ostream類的,因此繼承了輸入方法和輸出方法;
要使用這些工具,必須使用適當的類對象,創建這樣的對象(如count)將自動打開一個流,自動創建緩衝區,並將其與流關聯起來。
C++中已經預定義了8個流對象(4 個用於窄字符流,4 個用於寬字符流),它們是:
cin 對象對應於標準輸入流,這個流被關聯到標準輸入設備(鍵盤);
cout對象與標準輸出流相對應,這個流被關聯到標準輸出設備(顯示器);
cerr對象與標準錯誤流相對應,關聯到標準輸出設備,可用於顯示錯誤消息,沒被緩衝;
clog對象也對應着標準錯誤流,這個流被關聯到標準輸出設備,這個流被緩衝;
與此對應的是寬字符流的4個對象,wcin,wcout,wcerr,wclog。
Cout的使用
重載 << 運算符
<< 運算符的默認含義是按位左移運算符,但 ostream類重新定義了<<運算符,將其重載爲輸出,示作插入運算符,它能夠識別出C++中所有的基本類型和字符串指針類型。
插入運算符的所有化身的返回類型都是ostream &,原型的格式如下:
ostream & operator « (type)
其中,type是要顯示的數據的類型。返回類型 ostream &意味着使用該運算符將返回一個指向ostream 的對象。到底指向哪個對象呢?其實就指向調用該運算符的對象。