C++IO庫 - 隨便記點什麼
1. C++使用標準庫類來處理面向流的輸入和輸出:
iostream 處理控制檯IO;
fstream處理命名檔案IO;
stringstream完成記憶體string 的IO;
2. IO物件無拷貝或賦值
3. iostream: 每個輸出流管理一個緩衝區,用來儲存程式讀寫的資料;
導致緩衝重新整理的原因(資料真正寫到輸出裝置或檔案):
1.程式正常結束,作為main函式的return操作的一部分,緩衝重新整理被執行;
2.緩衝區慢時,需要重新整理緩衝,然後新的資料才可以繼續寫入緩衝區;
3.使用操作符如: endl, ends, flush來顯示重新整理緩衝區;
4.在每個輸出操作後,可以用操作符unitbuf設定流的內部狀態,來清空緩衝區。預設情況,對cerr是設定unitbuf的,因此 寫 到cerr的內容都是立即重新整理的;
5.一個輸出流可能 被關聯到另一個流,這種情況下,當讀寫被關聯的流時,關聯到的流的緩衝區會被重新整理。例如,cin和cerr都關聯到cout,因此,讀cin或寫cerr都會導致cout的緩衝區重新整理。
操作符endl,ends, flush重新整理緩衝區:
endl完成換行並重新整理緩衝區;
ends向緩衝區插入一個空字元,然後重新整理緩衝區;
flush重新整理緩衝區,但不輸出任何額外的字元;
測試:
結果:
關聯輸入輸出流:
4. 檔案輸入輸出 : fstream
支援檔案IO的三個型別: ifstream; ofstream; fstream.
讀寫檔案模式:
測試程式碼:
5. string 流 : istringstream; ostringstream; stringstream;
由於是繼承自iostream, 所以可以用 << 或 >> 符合來定向輸入或輸出流到 string流中:
第一行為輸入, 可見 >> 符號是按空格當作各項的分割符的。