頭檔案型別
iostream
istream 從流中讀取
ostream 寫到流中去
iostream對流進行讀寫,從istream和ostream派生而來
fstream
ifstream 從檔案中讀取,由istream派生而來
ofstream 寫到檔案中去,由ostream派生而來
fstream 讀寫檔案, 由iostream派生而來
sstream
istringstream從string物件中讀取,由istream派生而來
ostringstream寫到string物件中去,由ostream派生而來
stringstream 對string物件進行讀寫, 由iostream派生而來
到目前為止,所描述的流類讀寫的是由char型別組成的流。此外,標準庫還定義了一組相關的型別,支援wchar_t型別。每個類都加上「w」字首,以此與char型別的版本區分開來。於是,wostream、wistream和wiostream型別從控制視窗讀寫wchar_t資料。相應的檔案輸入輸出類是wifstream、wofstream和wfstream。而wchar_t版本的string輸入/輸出流則是wistringstream、wostringstream和wstirngstream。標準庫還定義了從標準輸入輸出讀寫寬字元的物件。這些物件加上"w"字首,以此與char型別的版本區分:wchar_t型別的標準輸入物件是wcin;標準輸出是wcout;而標準錯誤則是wcerr。
每個io標頭檔案都定義了char和wchar_t型別的類和標準輸入/輸出物件。基於流的wchar_t型別的類和物件在iostream中定義,寬字元檔案流型別在fsteam中定義,而寬字元stringstream則在sstream標頭檔案中定義。
這裡先不說為什麼標準io庫不允許做複製或賦值操作。以後將會查資料補上來。
一、只有支援複製的元素型別可以儲存在vector或其他容器型別裡。由於流物件不能複製,因此不能儲存在vector(或其他)容器中;
二、形參或返回型別也不能為流型別。若需要傳遞或返回io物件,則必須傳遞或返回指向該物件的指標或引用。一般情況下,如果要傳遞io物件以便對它進行讀寫,可用非const引用的方式傳遞這個流物件。對io物件的讀寫會改變它的狀態,因此引用必須是非const的。
io標準庫管理一系列條件狀態成員,用來標記給定io物件是否處於可用狀態,或者碰到了哪種特定的錯誤。標準庫定義的一組函式和標記,提供訪問和操縱流狀態的手段。
strm::iostate 機器相關的整型名,由各個iostream類定義,用於定義條件狀態
strm::badbit strm::iostate型別的值,用於指出被破壞的流
strm::failbit strm::iostate型別的值,用於指出失敗的io操作
strm::eofbit strm::iostate型別的值,用於指出流已經到達檔案結束符
s.eof() 如果設定了流s的eofbit值,則該函式返回true
s.fail() 如果設定了流s的failbit值,則該函式返回true
s.bad() 如果設定了流s的badbit值,則該函式返回true
s.good() 如果流s處於有效狀態,則該函式返回true
s.clear() 將流s中的所有狀態值都重設為有效狀態
s.clear(flag) 將流s中的某個指定條件狀態設定為有效。flag的型別是strm::iostate
s.setstate(flag) 給流s新增指定條件。flag的型別是strm::iostate
s.rdstate() 返回流s的當前條件,返回值型別為strm::iostate
流必須處於無錯誤狀態,才能用於輸入或輸出。檢測流是否可用的最簡單的方法是檢查其真值:
if (cin) // if 語句直接檢查流的狀態
while (cin >> word) //while語句則檢測條件表示式返回的流的狀態,若成功輸入,則條件檢測為真
每個io物件管理乙個緩衝區,用於儲存程式讀寫的資料。如有下面的語句:
os << " please enter a value:";
系統將字串字面值儲存在流os關聯的緩衝區中。下面幾種情況將導致緩衝區的內容被重新整理,即寫入到真實的輸出裝置或者檔案:
(1)程式正常結束。作為main返回工作的一部分,將清空所有輸出緩衝區;
(2)在一些不確定的時候,緩衝區可能已經滿了,在這種情況下,緩衝區將會在寫下乙個值之前重新整理;
(3)用操縱符顯式地重新整理緩衝區,例如行結束符endl;
(4)在每次輸出操作執行完後,用unitbuf操縱符設定流的內部狀態,從而清空緩衝區;
(5)可將輸出流與輸入流關聯起來。在這種情況下,在讀輸入流時將重新整理其相關的輸出緩衝區。
C Primer 標準IO庫雜記
trunc 清空 include include includeusing namespace std istream io istream input cout stringstream 物件的乙個常見用法是,需要在多種資料型別之間實現自動 格式化時使用該類型別。例如,有乙個數值型資料集合,要獲取...
《C Primer4》附錄 標準庫io庫的使用
1 輸出為bool型別格式為true和false,需要使用cout boolalpha,取消bool字母格式輸出使用 cout 2 將整型int i 10,按各種進製輸出的格式如下 八進位制輸出 cout 如果輸出需要帶上標記 0,0x 需要宣告為 cout showbase hex i 如果標記大...
C Primer學習札記 標準bitset庫
一 標準庫bitset型別 標準庫提供bitset類來進行位集的處理,同其他的一些標準庫一樣,要使用bitset類就必須包含系相關標頭檔案 includeusing std bitset 二 bitset物件的定義和初始化 bitsetb b有n位,每位都為0 bitsetb u b是乙個unsig...