8.1 標(biāo)準(zhǔn)庫IO類
頭文件 |
IO類型 |
iostream |
istream、wistream讀流數(shù)據(jù),ostream,owstream寫流數(shù)據(jù),iostream、wiostream讀寫流數(shù)據(jù) |
fstream |
ifstream、wifstream讀文件,ofstream、wofstream寫文件焕襟,fstream、wfstream讀寫文件 |
sstream |
istringstream茫打、wistringstream讀string,ostringstream、wostringstream寫string床未,stringstream传货、wstringstream讀寫string |
- 其中w開頭的為wchar_t寬字符數(shù)據(jù)。
- ifstream和istringstream繼承自istream,因此可以像操作istream一樣來操作它們刺洒,其他的IO類型也是同樣的道理漂问。
8.1.1 IO對象之間不能拷貝或者賦值
ofstream out1, out2;
out2 = out1; //error,assignment
ofstream out3(out1); //error,initial
out2 = printf(out2); //error, copy
8.1.2 IO對象的條件狀態(tài)
strm::iostate |
說明 |
strm::badbit |
流已經(jīng)崩潰,s.fail()返回true |
strm::failbit |
一個(gè)IO操作失敗了逢享,s.fail()返回true |
strm::eofbit |
流到達(dá)文件結(jié)束,s.eof()返回true |
strm::godbit |
流未處于錯(cuò)誤狀態(tài)伤哺,s.good()返回true |
s.clear() |
復(fù)位所有條件狀態(tài)茫舶,將流狀態(tài)設(shè)置為有效 |
s.clear(flags) |
復(fù)位指定狀態(tài) |
s.setstate(flags) |
置位指定狀態(tài) |
s.rdstate() |
返回流當(dāng)前狀態(tài) |
- 只有流狀態(tài)處于無措狀態(tài)時(shí),才能進(jìn)行讀寫數(shù)據(jù)荤懂。
- 判斷流狀態(tài)的最簡單辦法就是將其作為條件判斷
while(cin >> val ){ ... }
8.1.2 管理輸出緩沖區(qū)
刷新緩沖區(qū)的方式有多種:
- 程序正常結(jié)束,如果異常關(guān)閉挤忙,則不會(huì)刷新緩沖區(qū)大猛;
- 緩沖區(qū)滿了;
- 使用endl灶搜、flush、ends來刷新緩沖區(qū);
- 使用unitbuf來設(shè)置所有輸出都立即刷新緩沖區(qū)取试,可以使用nounitbuf來取消該狀態(tài)猿棉;
- 一個(gè)輸出流A被關(guān)聯(lián)到另一個(gè)流B萨赁,這樣當(dāng)流B進(jìn)行讀寫時(shí),A的緩沖區(qū)將被刷新聪铺,默認(rèn)cin和cerr都關(guān)聯(lián)到cout键兜,讀cin或者寫cerr都將刷新cout的緩沖區(qū),通過os.tie(os)函數(shù)進(jìn)行流關(guān)聯(lián),其返回值為舊的關(guān)聯(lián)流。
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者