1. 程式人生 > >讀書筆記-C++PrimerPlus-CPP流的總結

讀書筆記-C++PrimerPlus-CPP流的總結

首先推薦一個C++參考文件組織的比較好的網站http://www.cplusplus.com/,最近見得好像比較到自己組織的比較好。本文也是根據這個網上的資料總結得到的。

流的簡介

iostream是C++中提供流的輸入輸出函式的面向物件庫。

流是表示裝置被輸入輸出操作的抽象。一個流基本上可以看做是無限長的字串的來源或者目的地的表示。

通常來說流都與物理字串裝置的源或者字串相關聯,比如說硬碟檔案,鍵盤,或者控制檯。所以當從抽象得到或者寫入一個字元到抽象也叫做從物理裝置輸入或者輸出。例如檔案流是C++物件用來與檔案操作和互動,一旦流打開了一個檔案,任何流的輸入或輸出操作都是物理的對映到該檔案中。

為了操作流,C++提供了標準iostream庫,包括如下內容:
基本類模板:
基本iostreamu是一個類模板的繼承類。類模板以型別獨立的方式提供了絕大多數函式實現。這是類模板的集合,每個都有兩個模板引數,char型別(char T)引數,這個決定了要被操縱的元素型別。traits引數,這個提供了附加的特殊字元用於特定型別的元素。
類繼承中的類模板,和他們的字元型別例項有相同的名字但是多了個字首basic_。比如說istream是basic_istream型別的例項。fstream是basic——fstream型別的例項。等等。唯一的一個例外是ios_base,這個型別獨立的。他不是基於模板的而是一個普通的類。

類模板例項:
庫為所有的iostream類模板繼承合併了兩種標準例項實現。一個是窄字元也就是char型別,另一個是wchar_t型別。
窄char型別可能是更為人所熟知的部分。例如ios,istream和ofstream都是窄字元型別的。
寬char型別也命名也與窄char型別一樣,只是在前面多了一個w。比如說wios,wistream,wofstream。

標準物件:
作為 iostream庫的一部分,標頭檔案定義了特定的物件用於執行標準的輸入輸出操作。
他們被分成兩個部分,窄字元的,常用的如cin,cout,cerr和clog及對應的寬字元的,被宣告為wcin,wcout,wcerr和wclog

型別:
iostream型別基本上只使用基本型別作為成員原型。他們通常使用定義好的型別,取決於例項的traits。對應預設的char和wchar_t例項。型別streampos,streamoff和streamsize被用於表示位置,偏置和大小。

操作子(不知道怎麼翻譯了):
操作子是全域性函式,被設計用於與<<和>>結合使用的執行在iostream流物件上的。他們通常修改屬性或者格式設定。常用的如endl,hex和scientific。

這裡寫圖片描述

組織結構:

<ios><istream><ostream><iosfwd>
通常不會直接使用在絕大多數的C++程式中,他們通常被描述在繼承的基礎型別中。並被自動的包含在庫的繼承型別的其他標頭檔案中
iostream
聲明瞭和基本輸入輸出通訊的物件,包括cin和cout
fstream
定義了檔案流物件(basic_ifstream和ofstream)也聲明瞭內部快取物件如basic_filebuff。這些類被用於使用流操作檔案
sstream
定義在這個檔案中的類用於操作字串物件,如果他們是流的話。
iomanip
聲明瞭標準操作引數用於提取和插入運算元來修改內部標誌位和格式選項。

iostream庫的元素
類:
這裡寫圖片描述

物件:
這裡寫圖片描述

型別:
這裡寫圖片描述

操作子:
這裡寫圖片描述
這裡寫圖片描述