第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

有大佬了解在C++中文件流的使用及clear()的正確用法嗎?

有大佬了解在C++中文件流的使用及clear()的正確用法嗎?

qq_遁去的一_1 2021-10-26 19:19:17
ifstream f;f.open("d:\\3.txt");cout<<f.rdbuf();cout<<f.tellg()<<endl;f.close();f.clear();f.open("d:\\4.txt");string s;f>>s;cout<<s<<endl;if(f)cout<<"ok";elsecout<<"no";cout<<f.rdbuf();這段程序,在3.txt和4.txt中已經(jīng)有內(nèi)容.但是現(xiàn)在運(yùn)行結(jié)果是輸出3.txt的內(nèi)容 和成功將4.txt的內(nèi)容賦值給s,并把s輸出,然后if判斷中輸出ok,但是最后一句將4.txt的內(nèi)容輸出是沒(méi)有執(zhí)行(沒(méi)有輸出)。為什么?想知道clear()的用法,這里如果我把clear()語(yǔ)句注釋掉,運(yùn)行結(jié)果一樣.但是c++ primer上說(shuō)的是如果要重用流對(duì)象,必須記得關(guān)閉(close)和清除(clear).那注釋掉clerar()不是應(yīng)該會(huì)運(yùn)行錯(cuò)誤嗎?求解釋?
查看完整描述

3 回答

?
小怪獸愛(ài)吃肉

TA貢獻(xiàn)1852條經(jīng)驗(yàn) 獲得超1個(gè)贊

恕我不能回答第一個(gè)問(wèn)題,因?yàn)槲覐膩?lái)沒(méi)見(jiàn)過(guò)把rdbuf()的返回值打印的寫法。c++primer是很多年前看的了,如果我沒(méi)記錯(cuò)的話,書里面也沒(méi)有把rdbuf()的返回值直接打印的例子吧(如果我記錯(cuò)了,請(qǐng)指出)
事實(shí)上,在我的機(jī)器上,最后一句可以打印出4.txt余下的內(nèi)容。這個(gè)事實(shí)也間接回答了你第二個(gè)問(wèn)題。是否需要clear()操作才能重用流對(duì)象取決于可能很多因素,所以有些機(jī)器上你不需要clear,有些機(jī)器上你必須clear否則會(huì)報(bào)錯(cuò)。
c++ primer的意思是,如果你想寫出優(yōu)秀的代碼,可復(fù)用的代碼,那么你必須寫clear,否則你不知道在誰(shuí)的機(jī)器上這代碼可能不能運(yùn)行。
你可以把你的4.txt的內(nèi)容貼出來(lái),看看在我機(jī)器上運(yùn)行結(jié)果如何

查看完整回答
反對(duì) 回復(fù) 2021-10-31
?
婷婷同學(xué)_

TA貢獻(xiàn)1844條經(jīng)驗(yàn) 獲得超8個(gè)贊

只有當(dāng)輸入失敗時(shí)才使用clear()。當(dāng)輸入不正確時(shí),流就會(huì)設(shè)置那個(gè)iostate成員為failbit或eofbit或badbit,視情況

查看完整回答
反對(duì) 回復(fù) 2021-10-31
?
精慕HU

TA貢獻(xiàn)1845條經(jīng)驗(yàn) 獲得超8個(gè)贊

有些C++實(shí)現(xiàn)要求在程序末尾使用f.clear(),有些則不要求,這取決于將文件與ifstream對(duì)象關(guān)聯(lián)起來(lái)時(shí),是否重置流狀態(tài),使用f.clear()是無(wú)害的

查看完整回答
反對(duì) 回復(fù) 2021-10-31
  • 3 回答
  • 0 關(guān)注
  • 569 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)