庫
輸入/輸出
輸入/輸出庫
iostream 庫是一個面向物件的庫,使用流提供輸入和輸出功能。
流是一種抽象,代表在其上執行輸入和輸出操作的裝置。流基本上可以表示為一個無限長度的字元源或目標。
流通常與一個物理字元源或目標相關聯,例如磁碟檔案、鍵盤或控制檯,因此從我們稱之為流的抽象中獲取或寫入的字元會物理地輸入/輸出到物理裝置。例如,檔案流是用於操作和與檔案互動的 C++ 物件;一旦使用檔案流開啟檔案,在該流上執行的任何輸入或輸出操作都會物理地反映在檔案中。
為了操作流,C++ 提供了標準的
iostream庫,其中包含以下元素
- 基本類模板
- iostream 庫的基礎是類模板的層次結構。類模板以型別無關的方式提供了庫的大部分功能。
這是一組類模板,每個類模板都有兩個模板引數:字元型別 (charT) 引數,它決定了要操作的元素型別;以及 traits 引數,它為特定型別的元素提供了額外的特性。
這個類層次結構中的類模板與其字元型別例項化的名稱相同,但帶有字首basic_。例如,istream例項化的類模板叫做basic_istream,而fstream例項化的叫做basic_fstream,等等……唯一的例外是ios_base,它本身是型別無關的,因此不是基於模板,而是一個常規類。
- 類模板例項化
- 該庫包含了整個 iostream 類模板層次結構的兩套標準例項化:一套是窄向的,用於操作char型別的元素;另一套是寬向的,用於操作wchar_t.
型別的元素。窄向(char型別)的例項化可能是 iostream 庫中更為人所知的部分。像ios, istream和、ofstream這樣的類都是窄向的。本頁頂部的圖表顯示了窄向類的名稱和關係。
寬向(wchar_t)例項化的類遵循與窄向例項化相同的命名約定,但每個類和物件的名稱都以w字元為字首,例如構成wios, 、wistream和、wofstream等。
- 標準物件
- 作為 iostream 庫的一部分,標頭檔案<iostream>聲明瞭某些用於在標準輸入和輸出上執行輸入和輸出操作的物件。
它們分為兩組:窄向物件,即廣為人知的cin, 、cout, 、cerr和、clog,以及它們對應的寬向物件,宣告為wcin, 、wcout, 、wcerr和、wclog.
- 型別
- iostream 類在其成員的原型中很少使用基本型別。它們通常使用定義的型別,這些型別取決於其例項化中使用的 traits。對於預設的char和wchar_t例項化,使用streampos, 、streamoff和和 streamsize型別來分別表示位置、偏移量和大小。
- 操縱符
- 操縱符是全域性函式,設計用於與在iostream流物件上執行的插入 (<<) 和提取 (>>) 運算子一起使用。它們通常修改流的屬性和格式設定。endl, 、hex和和 scientific是操縱符的一些例子。
組織結構
該庫及其類層次結構被分割在不同的檔案中
- <ios>, <istream>, <ostream>, <streambuf>和<iosfwd>通常不會在大多數 C++ 程式中直接包含。它們描述了層次結構的基類,並由庫中包含派生類的其他標頭檔案自動包含。
- <iostream>聲明瞭用於透過標準輸入和輸出進行通訊的物件(包括cin和、cout).
- <fstream>定義了檔案流類(如模板basic_ifstream或類、ofstream)以及與這些類一起使用的內部緩衝物件(basic_filebuf)。這些類用於使用流來操作檔案。
- <sstream>:此檔案中定義的類用於將 string 物件當作流來操作。
- <iomanip>聲明瞭一些帶引數的標準操縱符,與提取和插入運算子一起使用,以修改內部標誌和格式選項。
相容性說明
本參考中為 iostream 類包含的名稱、原型和示例主要描述和使用
char類模板的例項化,而不是模板本身,儘管這些類只是其可能的例項化之一。我們認為這提供了更好的可讀性,並且從
char例項化中獲取基本模板的名稱和原型與反向操作一樣簡單。
iostream 庫的元素(char 例項化)
類:
- ios_base
- 流的基類 (類)
- ios
- 流的基類(型別依賴元件) (類)
- istream
- 輸入流 (類)
- ostream
- 輸出流 (類)
- iostream
- 輸入/輸出流 (類)
- ifstream
- 輸入檔案流類 (類)
- 、ofstream
- 輸出檔案流 (類)
- fstream
- 輸入/輸出檔案流類 (類)
- istringstream
- 輸入字串流 (類)
- ostringstream
- 輸出字串流 (類)
- stringstream
- 輸入/輸出字串流 (類)
- streambuf
- 流的基緩衝類 (類)
- filebuf
- 檔案流緩衝區 (類)
- stringbuf
- 字串流緩衝區 (類)
物件:
- cin
- 標準輸入流 (物件)
- 、cout
- 標準輸出流 (物件)
- 、cerr
- 標準錯誤輸出流 (物件)
- 、clog
- 標準日誌輸出流 (物件)
型別:
- fpos
- 流位置類模板 (類模板)
- 、streamoff
- 流偏移型別 (型別)
- streampos
- 流位置型別 (型別)
- 和 streamsize
- 流大小型別 (型別)
操縱符:
- boolalpha
- 布林值的字母數字表示 (函式)
- dec
- 使用十進位制 (函式)
- endl
- 插入換行符並重新整理 (函式)
- ends
- 插入空字元 (函式)
- fixed
- 使用定點浮點表示法 (函式)
- flush
- 重新整理流緩衝區 (函式)
- 、hex
- 使用十六進位制 (函式)
- internal
- 透過在內部位置插入字元來調整欄位 (函式)
- left
- 將輸出左對齊 (函式)
- noboolalpha
- 不使用布林值的字母數字表示 (函式)
- noshowbase
- 不顯示數值基數字首 (函式)
- noshowpoint
- 不顯示小數點 (函式)
- noshowpos
- 不顯示正號 (函式)
- noskipws
- 不跳過空白字元 (函式)
- nounitbuf
- 插入後不強制重新整理 (函式)
- nouppercase
- 不生成大寫字母 (函式)
- oct
- 使用八進位制 (函式)
- resetiosflags
- 重置格式標誌 (函式)
- right
- 將輸出右對齊 (函式)
- 和 scientific
- 使用科學計數浮點表示法 (函式)
- setbase
- 設定基數字段標誌 (函式)
- setfill
- 設定填充字元 (函式)
- setiosflags
- 設定格式標誌 (函式)
- setprecision
- 設定小數精度 (函式)
- setw
- 設定欄位寬度 (函式)
- showbase
- 顯示數值基數字首 (函式)
- showpoint
- 顯示小數點 (函式)
- showpos
- 顯示正號 (函式)
- skipws
- 跳過空白字元 (函式)
- unitbuf
- 插入後重新整理緩衝區 (函式)
- uppercase
- 生成大寫字母 (函式)
- ws
- 提取空白字元 (函式)