C++primer 第八章 IO庫(kù)

整理自《C++Primer》

  • 第八章之前涉及到IO的內(nèi)容



8.1 IO類

  • 三個(gè)頭文件9個(gè)io對(duì)象



    繼承關(guān)系

  1. 基礎(chǔ)IO類ios類有兩個(gè)派生類:istream(通用輸入流類),ostream(通用輸出流類)蹄葱。
  2. istream派生出 ifsteam(輸入文件流類)和istringstream(輸入字符串流類)厘贼;ostream派生出ofsteam(輸入文件流類)和ostringstream(輸入字符串流類)
  3. iostream(通用輸入輸出流類)鉆石繼承于istream和ostream啼止,之后派生出了fstream(輸入輸出文件流類)和stringstream(輸入輸出字符串類)

  • io對(duì)象沒(méi)有拷貝和賦值的操作

  • 流狀態(tài)

    確定一個(gè)流對(duì)象的狀態(tài)的最簡(jiǎn)單的方法是將他當(dāng)成一個(gè)條件來(lái)使用

    while (cin>>word)
      //ok :讀操作成功
    
  • 管理輸出緩沖

    由于設(shè)備的寫操作可能很耗時(shí)娃胆,允許操作系統(tǒng)將多個(gè)輸出操作組合為單一的設(shè)備寫操作可以帶來(lái)很大的性能提升

    • 導(dǎo)致緩沖刷新(數(shù)據(jù)真正寫入到輸出設(shè)備或者文件的)原因傅联,即刷緩存的時(shí)機(jī)
      1. 程序結(jié)束main函數(shù)return
      2. 緩沖區(qū)滿
      3. 操作符:endl(輸出換行并刷新),flush(刷新)0,ends(輸出空字符并刷新)
      4. unitbuff:使以后每次寫操作之后都刷一次緩存。 nounitbuff:回到正常的緩存模式
      5. 輸入流和輸出流的關(guān)聯(lián):如cin cerr關(guān)聯(lián)到cout,所以當(dāng)讀cin或者寫cerr的時(shí)候cout的緩沖區(qū)會(huì)被刷新(輸入之前忆绰,把所有沒(méi)輸出的先輸出了)

8.2 文件輸入輸出

  • 使用文件流對(duì)象
    ifstream in(ifile);  //構(gòu)造一個(gè)ifstream 并打開(kāi)給定文件
    //也可以用下面的方式
    ofstream out;  //輸出文件流未關(guān)聯(lián)到任何文件
    out.open(ofile);  //關(guān)聯(lián)
    //關(guān)閉
    in.close();
    out.close();
    

    上面代碼中 參數(shù)ifile和ofile在c++11中一個(gè)是一個(gè)string類型,老的標(biāo)準(zhǔn)只能是一個(gè)char *

  • 自動(dòng)構(gòu)造和析構(gòu)

    一個(gè)fstream對(duì)象離開(kāi)其作用域時(shí)可岂,fstream的析構(gòu)函數(shù)被調(diào)用错敢,之前關(guān)聯(lián)的文件自動(dòng)關(guān)閉。

  • 文件模式



    限制:


8.3 string流

用于從string讀數(shù)據(jù)缕粹,向string寫數(shù)據(jù)


  • 使用 istringstream
  • 使用 ostringstream
    string s;
    istringstream is("mack pitt jane joe");
    while(is>>s)
    {
        cout <<s<<endl;
    }

再如二叉樹(shù)的序列化與反序列化 中 split函數(shù)的實(shí)現(xiàn)



15.7節(jié) IO庫(kù)再探

只要涉及三部分內(nèi)容稚茅,格式化輸入輸出,未格式化IO和隨機(jī)訪問(wèn)

  • 格式化輸入輸出

    用操作符來(lái)修改流的格式狀態(tài)平斩,操作符有兩大類輸出控制:控制數(shù)值的輸出形式以及控制補(bǔ)白的數(shù)量和位置亚享。當(dāng)操作符改變流的格式狀態(tài)時(shí),通常改變后的狀態(tài)對(duì)后續(xù)的IO都生效绘面,通常在不再需要特殊格式的時(shí)候盡快將流恢復(fù)到默認(rèn)狀態(tài)欺税。

    • 輸出格式控制
    操作符 格式控制
    boolalpha/noboolalpha 布爾值的格式(輸出1/0還是true/false)
    oct 輸出八進(jìn)制整數(shù)
    hex 輸出十六八進(jìn)制整數(shù)
    dec 輸出十進(jìn)制(默認(rèn))
    showbase/noshowbase 在輸出中指出進(jìn)制(加不加前導(dǎo):0x十六進(jìn)制 0八進(jìn)制)
    cout.precision(3) 設(shè)置打印精度為3位數(shù)字,默認(rèn)精度為6位
    setprecision(3) 效果同上 (注:setprecision和其他接收精度的操作符定義在頭文件iomanip中
    scientifc 浮點(diǎn)數(shù)計(jì)數(shù)法為科學(xué)計(jì)數(shù)法
    fixed 浮點(diǎn)數(shù)計(jì)數(shù)法為點(diǎn)分十進(jìn)制
    hexfloalt 浮點(diǎn)數(shù)計(jì)數(shù)法為十六進(jìn)制計(jì)數(shù)法
    defaultfoalt 恢復(fù)默認(rèn)浮點(diǎn)數(shù)計(jì)數(shù)法
    注意 defaultfoalt,hexfloalt,fixed使用過(guò)后,再設(shè)置精度飒货,則精度位數(shù)代表的是小數(shù)點(diǎn)后的位數(shù)魄衅,默認(rèn)情況下代表的是數(shù)字的總位數(shù)
    showpoint/noshowpoint 即使是整數(shù)也要打印出小數(shù)點(diǎn)以及后面的位數(shù)
    setw(12) 指定下一個(gè)輸出的項(xiàng)所占的位數(shù),此操作符不改變流的狀態(tài)塘辅,只對(duì)下一個(gè)項(xiàng)生效
    left/right 左對(duì)齊還是右對(duì)齊(默認(rèn))
    internal 負(fù)號(hào)是緊跟在數(shù)字前面還是左對(duì)齊
    setfill 指定字符代替空白來(lái)輸出
    • 輸入格式控制

    默認(rèn)情況下晃虫,輸入運(yùn)算符會(huì)忽略空白符,(空格符扣墩,制表符哲银,換行符,換紙符呻惕,回車符)荆责,用noskip操作符會(huì)設(shè)置輸入運(yùn)算符讀取空白符,而不是跳過(guò)他們亚脆。

  • 未格式化的輸入輸出

    將流當(dāng)做一個(gè)無(wú)解釋的字節(jié)序列來(lái)處理做院。沒(méi)咋使用過(guò),以后用到了再看吧

  • 流隨機(jī)訪問(wèn)

    seek 重定位 tell告訴我們當(dāng)前位置


g是輸入流(istream,ifstream,istringstream)的版本,p是輸出流(ostream,ofstream,ostringstream)的版本

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末濒持,一起剝皮案震驚了整個(gè)濱河市键耕,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌柑营,老刑警劉巖屈雄,帶你破解...
    沈念sama閱讀 211,194評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異官套,居然都是意外死亡酒奶,警方通過(guò)查閱死者的電腦和手機(jī)蚁孔,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,058評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)惋嚎,“玉大人杠氢,你說(shuō)我怎么就攤上這事∪惩” “怎么了修然?”我有些...
    開(kāi)封第一講書人閱讀 156,780評(píng)論 0 346
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)质况。 經(jīng)常有香客問(wèn)我,道長(zhǎng)玻靡,這世上最難降的妖魔是什么结榄? 我笑而不...
    開(kāi)封第一講書人閱讀 56,388評(píng)論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮囤捻,結(jié)果婚禮上臼朗,老公的妹妹穿的比我還像新娘。我一直安慰自己蝎土,他們只是感情好视哑,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,430評(píng)論 5 384
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著誊涯,像睡著了一般挡毅。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上暴构,一...
    開(kāi)封第一講書人閱讀 49,764評(píng)論 1 290
  • 那天跪呈,我揣著相機(jī)與錄音,去河邊找鬼取逾。 笑死耗绿,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的砾隅。 我是一名探鬼主播误阻,決...
    沈念sama閱讀 38,907評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼晴埂!你這毒婦竟也來(lái)了究反?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書人閱讀 37,679評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤邑时,失蹤者是張志新(化名)和其女友劉穎奴紧,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體晶丘,經(jīng)...
    沈念sama閱讀 44,122評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡黍氮,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,459評(píng)論 2 325
  • 正文 我和宋清朗相戀三年唐含,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片沫浆。...
    茶點(diǎn)故事閱讀 38,605評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡捷枯,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出专执,到底是詐尸還是另有隱情淮捆,我是刑警寧澤,帶...
    沈念sama閱讀 34,270評(píng)論 4 329
  • 正文 年R本政府宣布本股,位于F島的核電站攀痊,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏拄显。R本人自食惡果不足惜苟径,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,867評(píng)論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望躬审。 院中可真熱鬧棘街,春花似錦、人聲如沸承边。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 30,734評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)博助。三九已至险污,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間翔始,已是汗流浹背罗心。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 31,961評(píng)論 1 265
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留城瞎,地道東北人渤闷。 一個(gè)月前我還...
    沈念sama閱讀 46,297評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像脖镀,于是被迫代替她去往敵國(guó)和親飒箭。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,472評(píng)論 2 348