1. 程式人生 > >C/C++基礎----IO庫

C/C++基礎----IO庫

結束 定義 崩潰 size 傳遞 ios col clear 機器

  • IO對象無拷貝或賦值,通常以引用形式傳遞。

IO庫條件狀態

strm::iostate

一種機器相關的類型,提供了表達條件狀態的完整功能

strm::badbit

用來指出流已經崩潰

strm::failbit

用來指出一個IO操作失敗了

strm::eofbit

用來指出流到達了文件結束

strm::goodbit

用來指出流未處於錯誤狀態,此值保證為0

s.eof()

若s的eofbit置位,返回true

s.fail()

若s的failbit或badbit置位,返回true

s.bad()

若s的badbit置位,返回true

s.good()

s處於有效狀態,則返回true

s.clear()

s的所有條件狀態位復位,返回void

s.clear(flags)

將給定的標誌位復位,返回void

s.setstate(flags)

將流中對應條件狀態為置位,返回void

s.rdstate()

返回流s的當前狀態,返回值類型為strm::iostate

緩沖刷新(數據真正寫到輸出設備或文件)的原因:

  • 程序正常結束
  • 緩沖區滿時
  • 操縱符endl、flush、ends
  • 操縱符unitbuf設置流的內部狀態,每次輸出後都刷新(cout<<unitbuf; cout<<nonunitbuf;)
  • 當讀寫被關聯的流時,被關聯的流會刷新(讀cin或寫cerr都會導致cout刷新)

關聯—兩個重載版本

cin.tie() 返回指向輸出流的指針,如未關聯則返回空指針;

cin.tie(&cout) 將cin關聯到cout

fstream繼承自iostream,定義時可以打開名為s的文件

除了<< 和 >> ,還可以open close getline

in以讀模式打開

out 以寫模式打開

app 每次寫操作均定位到文件末尾

ate打開文件後立即定位到文件末尾

trunk 截斷文件

binary 以二進制方式打開IO

默認out模式打開文件,且截斷文件;如不想清空文件內容,需要同時指定app

string流

sstream strm(s); //explicit的

strm.str(); //返回所保存的string拷貝

strm.str(s); //s拷貝到strm中

某些工作是對整行進行處理,而其他一些工作是處理行內某個單詞時,通常可以使用istringstream

當我們逐步構造輸出希望最後一起打印時,ostringstream很有用。

C/C++基礎----IO庫