第八章 IO庫學習筆記(第一遍閱讀)

2021-08-02 18:48:52 字數 2241 閱讀 3998

c++語言不直接處理輸入輸出,使用標準庫來處理面向流的輸入和輸出。

- iostream處理控制台io

- fstream處理命名檔案i

- stringstream完成記憶體string的io

類fstream和stringstream繼承自類iostream,輸入類繼承自istream,輸出類繼承自ostream。

每個io物件都維護一組條件狀態,用來指出物件是否可以進行io操作。標準庫提供了一組函式,用來設定和檢測這些狀態。

術語:條件狀態 檔案模式 檔案流 字串流

三個標頭檔案:

1. iostream

istream wistream 從流中讀取資料

ostream wostream 向流中寫入資料

iostream wiostream 讀寫流

2. fstream

3. stringstream

注意,標準庫中也定義了一組型別和物件來草種wchar_t(寬字元)型別的資料。

io物件無拷貝或賦值

不能拷貝或對io物件賦值,進行io操作的函式通常是以引用方式傳遞和返回流,讀寫io物件會改變它的狀態所以傳遞和返回的引用不能是const的。

條件狀態

乙個流一旦發生錯誤,其上後續的io操作都會失敗,在**通常應該在使用乙個流之前檢查它是否處於良好的狀態。

while (cin>>word)//ok 讀操作成功
io類中定義了一些函式和標識,可以幫助我們查詢和管理流的條件狀態。

strm::iostate //提供了表達流狀態的完整功能,應作為乙個為集合來使用,與位運算子一起使用可以一次性檢測多個標誌位

strm::badbit //流已經崩潰 (系統級錯誤)

strm::failbit //流操作失敗

strm::eofbit //流達到了檔案結束

strm::goodbit //劉偉處於錯誤狀態

s.eof()//若流的eofbit置位則返回true

s.fail()

s.good()

s.clear()//將流的所有條件狀態位復位,將流的狀態設定為有效。

s.clear(flags)

s.setstate(flags)

s.rdstate()

cin.clear(cin.rdstate()&~cin.failbit&~cin.batbit);

//復位failbit和badbit位 其他位保持不變

管理輸出緩衝

每個輸出流都管理乙個緩衝區,用來儲存程式讀寫的資料。

重新整理輸出緩衝區:

endl 換行 重新整理

flush 重新整理

ends 空字元 重新整理

unitbuf 每次寫操作後都進行一次flush

nounitbut 回到正常緩衝方式

*如果程式崩潰,輸出緩衝區不會被重新整理

標頭檔案:fstream

三個型別:ifstream ofstream fstream

除繼承自iostream型別的行為fstream增加了新的成員管理與流關聯的檔案

fstream fstrm;

fstream fstrm(s);

fstream fstrm(s,mode);

fstrm.open(s);

fstrm.close();

fstrm.is_open();

檔案模式
in

%讀方式開啟

out %寫方式開啟

ate %開啟檔案後立即定位到檔案末尾

trunc

%截斷檔案

binary %以二進位制方式進行io

ate 和binary模式可用於任何型別的檔案流物件,可以與其他型別模式組合使用。

標頭檔案:sstream

三個型別:istringstream ostringstream stringstream

sstream

strm;

sstream

strm(s); % strm是乙個sstream的物件,儲存strings s的乙個拷貝

strm.str(); % 返回strm所儲存的string考辦

strm.str(s); % 將string s拷貝到strm中

第八章 IO庫

由於不能拷貝 io 物件,因此我們也不能將形參或返回型別設定為流型別。進行 io 操作的函式通常以引用方式傳遞和返回流。讀寫乙個 io 物件會改變其狀態,因此傳遞和返回的引用不能是 const 導致緩衝區重新整理 即,資料真正寫到輸出裝置或檔案 的原因 程式正常結束,作為 main 函式的 retu...

第八章 IO庫

表8.1是標準庫中的這些io型別和標頭檔案 為支援寬字元語言,標準庫定義的io類也可操縱wchar t型別資料,它對應的型別和函式名以w開始 裝置型別和字元寬度不會影響io操作,例如 運算子對控制台視窗 檔案 字串都可用,對char和wchar t也可用 通過繼承,標準庫可忽略這些不同裝置和不同字元...

C primer 學習筆記 第八章 IO庫

io庫型別和標頭檔案 頭檔案型別iostream 流 istream,wistream從流讀取資料 ostream,wostream向流寫入資料 iostream,wiostream讀寫流 fstream 檔案 ifstream,wifstream從檔案讀取資料 ofstream,wofstream...