C++_IO类型_文件输入输出流_字符串流
IO類型
- iostream: 用于窗口的輸入輸出
- fstream: 用于文件讀寫
- sstream :讀寫存儲(chǔ)在內(nèi)存中的string對(duì)象
注:他們繼承于istream與ostream,因此istream對(duì)象也可用于讀取ifstream, string對(duì)象, ostream對(duì)象同上; 并且iostream類型可在同一個(gè)流實(shí)現(xiàn)輸入輸出操作;.
IO對(duì)象不可復(fù)制賦值
IO條件狀態(tài)
條件狀態(tài)包含:
- strm:badbit :被破壞的流
- strm::failbit: 失敗的IO操作
- strm::eofbit: 指出流已經(jīng)到達(dá)文件結(jié)束符
- clear: 將流中狀態(tài)值重置為有效值
- setstate: 添加指定條件(為strm::iostate類型)
注:前三者都為iostate類型, IO類定義了3個(gè)iostate類型的常量值:badbit,failbit,eofbit
所有流對(duì)象都包含一個(gè)條件狀態(tài)成員,由setstate,clear(添加IO條件,將某個(gè)條件狀態(tài)設(shè)置為有效值)操作管理;該狀態(tài)成員為iostate類型,以二進(jìn)制(bit)形式使用.
流的狀態(tài)由bad,fail,eof,good操作提示,流正確時(shí)bad,fail,eof返回 false,good返回true
例:流狀態(tài)的查詢與控制
當(dāng)同時(shí)使用多個(gè)狀態(tài)時(shí)可采用直接或運(yùn)算(滿足條件的二進(jìn)制位都變?yōu)?)
i.setstate(ifstream::badbit|ifstream::failbit); //同時(shí)將開啟流狀態(tài)成員輸入輸出緩沖區(qū)管理
每個(gè)IO對(duì)象都具有一個(gè)緩沖區(qū),用于儲(chǔ)存程序讀寫數(shù)據(jù)
如下操作導(dǎo)致緩沖區(qū)內(nèi)容被刷新
- 程序正常結(jié)束
- 緩沖區(qū)已經(jīng)存滿
- 使用操作符顯示刷新緩沖區(qū),例:endl,flush
- 輸入操作完成,用unitbuf操作符設(shè)置流內(nèi)部狀態(tài)
- 將輸入輸出流關(guān)聯(lián),在讀取時(shí)將刷新關(guān)聯(lián)的輸出緩沖區(qū)
注:unitbuf用于刷新所有輸出,當(dāng)程序不正常結(jié)束,不會(huì)刷新緩沖區(qū),系統(tǒng)不會(huì)在程序崩潰時(shí)自動(dòng)刷新緩沖區(qū)
輸入輸出關(guān)聯(lián)
IO對(duì)象具有tie函數(shù),用法如下:
文件輸入流與輸出流
- ofstream: 輸出文件流,創(chuàng)建文件并向文件寫入信息
- ifstream:輸入文件流,從文件讀取信息
- fstream:同時(shí)具有ofstream與ifsteam的功能
文件操作時(shí),C++源代碼必須包含< iostream> < fstream>
打開文件
void open(const char *filename,ios::openmode mode);
第一個(gè)參數(shù)文件位置及文件名,第二個(gè)參數(shù)打開類型; open是文件流對(duì)象的成員函數(shù)
mode具有如下:
- ios::app :在文件末尾添加內(nèi)容
- ios::ate :文件打開后定向到末尾
- ios::in :打開文件用于讀取
- ios::out :打開文件用于輸入
- ios:trunc :打開文件清空已存在的文件流(我的理解是覆蓋以前文件內(nèi)容,有不對(duì)的地方還請(qǐng)指出)
以上介紹的標(biāo)志可以結(jié)合使用,out,trunc,app只能用于指定與ofstream或fstream對(duì)象關(guān)聯(lián)的文件,默認(rèn)打開形式只有in,out
ofstream outfile; outfile.open("data.txt",ios::in|ios::trunc); //或者 fstream file; //fstream對(duì)象默認(rèn)打開方式為in和out同時(shí)打開 file.open("data.txt",ios::in|ios::out);關(guān)閉文件: 流對(duì)象.close();
寫入文件: 流插入運(yùn)算符(<<)
讀取文件: 流提取符(>>)
實(shí)例操作:
字符串流
標(biāo)準(zhǔn)庫定義三種類型字符串流
- istringstream: istream派生,提供讀string
- ostringstream: ostream派生,提供寫string
- stringstream: iostream派生,提供讀寫
注:必須包含sstream頭文件
stringstream的特定操作
- stringstream strm: 創(chuàng)建對(duì)象
- stringstream strm(s): 用string對(duì)象s初始化strm;
- strm.str(): 返回strm中存儲(chǔ)的string類型對(duì)象
- strm.str(s): 將s復(fù)制給strm,返回void
ostringstream可用于格式轉(zhuǎn)換
istringstream自動(dòng)將數(shù)值類型的字符轉(zhuǎn)化為相應(yīng)數(shù)值
注:上述操作中注意需要將string對(duì)象分割才能得到,空白符與換行符會(huì)被忽略
總結(jié)
以上是生活随笔為你收集整理的C++_IO类型_文件输入输出流_字符串流的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: win7关机快捷键_1个U盘+1款软件,
- 下一篇: linux终端贪吃蛇,分享|nSnake