C/C++基礎----IO庫
- 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庫