發(fā)布時(shí)間:2022年04月15日 06:59:47分享人:草戒指的美麗來(lái)源:互聯(lián)網(wǎng)19
我的技術(shù)博客:www.cnblogs.com/overcode 學(xué)習(xí)C++的同學(xué)可能都會(huì)遇到一個(gè)getline()函數(shù),譬如在C++premer中,標(biāo)準(zhǔn)string類型第二小節(jié)就是“用getline讀取整行文本”。書上給的程序如下:int main(){ string line: while(getline(cin,line)) cout<<line<<endl; return 0;}大家會(huì)發(fā)現(xiàn)運(yùn)行時(shí)怎么也跳不出循環(huán),甚至?xí)l(fā)生各種莫名其妙的錯(cuò)誤。這是為什么呢?在這里我給大家做一個(gè)詳細(xì)的講解。首先給大家介紹一下getline()函數(shù)(個(gè)人覺(jué)得百度百科給的果斷不夠詳細(xì))大家百度會(huì)發(fā)現(xiàn)getline()的原型是istream&getline ( istream &is , string &str, char delim );其中 istream &is表示一個(gè)輸入流,譬如cin;string&str表示把從輸入流讀入的字符串存放在這個(gè)字符串中(可以自己隨便命名,str什么的都可以);chardelim表示遇到這個(gè)字符停止讀入,在不設(shè)置的情況下系統(tǒng)默認(rèn)該字符為'n',也就是回車換行符(遇到回車停止讀入)。給大家舉個(gè)例子:string line;cout<<"please cin a line:"getline(cin,line,'#');cout<<endl<<"Theline you give is:"line;那么當(dāng)我輸入"You are the #best!"的時(shí)候,輸入流實(shí)際上只讀入了"You are the",#后面的并沒(méi)有存放到line中(應(yīng)該是在緩沖區(qū)里吧)。然后程序運(yùn)行結(jié)果應(yīng)該是這樣的:please cin aline:You are the #best!The line you giveis:You are the而且這里把終止符設(shè)為#,你輸入的時(shí)候就算輸入幾個(gè)回車換行也沒(méi)關(guān)系,輸入流照樣會(huì)讀入,譬如: please cin a line:You are thebest!//這里輸入了一個(gè)回車換行 Thank you! # //終止讀入 The line yougive is:You are the best!//換行照樣讀入并且輸出 Thankyou!以上就是getline()函數(shù)一個(gè)小小的實(shí)例了。那么如果把getline()作為while的判斷語(yǔ)句會(huì)怎么樣呢?讓我們一起來(lái)分析一下while(getline(cin,line))語(yǔ)句注意這里默認(rèn)回車符停止讀入,按Ctrl+Z或鍵入EOF回車即可退出循環(huán)。在這個(gè)語(yǔ)句中,首先getline從標(biāo)準(zhǔn)輸入設(shè)備上讀入字符,然后返回給輸入流cin,注意了,是cin,所以while判斷語(yǔ)句的真實(shí)判斷對(duì)象是cin,也就是判斷當(dāng)前是否存在有效的輸入流。在這種情況下,我想只要你的電腦不中毒不發(fā)神經(jīng)你的輸入流怎么會(huì)沒(méi)有效?所以這種情況下不管你怎么輸入都跳不出循環(huán),因?yàn)槟愕妮斎肓饔行?,跳不出循環(huán)。然而有些同學(xué)誤以為while判斷語(yǔ)句的判斷對(duì)象是line(也就是line是否為空),然后想通過(guò)直接回車(即輸入一個(gè)空的line)跳出循環(huán),卻發(fā)現(xiàn)怎么也跳不出循環(huán)。這是因?yàn)槟愕幕剀囍粫?huì)終止getline()函數(shù)的讀入操作。getline()函數(shù)終止后又進(jìn)行while()判斷(即判斷輸入流是否有效,你的輸入流當(dāng)然有效,滿足條件),所以又運(yùn)行g(shù)etline()函數(shù),所以,你懂了吧。。。
愛(ài)華網(wǎng)本文地址 » http://www.klfzs.com/a/25101018/373340.html
更多閱讀

如何填寫政治面貌?【詳解】——簡(jiǎn)介政治面貌可不是指的人的外貌,政治面貌其實(shí)是一個(gè)人的政治身份。對(duì)于我們普通公民而言,政治身份似乎沒(méi)有什么影響,但是對(duì)于當(dāng)權(quán)者或者機(jī)構(gòu)組織而言,政治面貌就很重要了,在對(duì)個(gè)人考察方面或者職位提升方面

?特寫看一下... 對(duì)于圓臉型的妹子來(lái)說(shuō),需要有一些角度的眉毛,把眉峰吊起來(lái),讓臉型看起來(lái)更有棱角一些~對(duì)于下巴比較寬或者太陽(yáng)穴比較窄的妹紙,美貌的形狀要大氣自然,而且要適當(dāng)?shù)亩桃恍?,并且加重眉頭部分不同臉型適合畫眉方法,詳解

100道門2013攻略100關(guān)圖文詳解:[1]第1~10關(guān)——簡(jiǎn)介100道門2013是安卓平臺(tái)一款新穎的解密益智游戲,你需要在房間中發(fā)現(xiàn)線索,然后把門打開進(jìn)入下一個(gè)房間。每一個(gè)房間的主題都不一樣,將給你帶來(lái)百次不同的游戲體驗(yàn)!100道門2013攻略100關(guān)

excel公式函數(shù)詳解:[19]yearfrac函數(shù)用法介紹——簡(jiǎn)介一個(gè)良好的規(guī)劃對(duì)于生活品質(zhì)和工作效率都極其重要,在實(shí)際生活中我們往往需要計(jì)算一年有幾個(gè)項(xiàng)目,每個(gè)項(xiàng)目需要花費(fèi)多長(zhǎng)時(shí)間。不同的工作其所花的中心也應(yīng)該不一樣。在excel中有一個(gè)

Excel函數(shù)詳解:[166]FREQUENCY函數(shù)用法——簡(jiǎn)介FREQUENCY函數(shù),用于以垂直數(shù)組的形式返回多個(gè)數(shù)值在某個(gè)區(qū)域內(nèi)出現(xiàn)的頻率。該函數(shù)返回的是數(shù)組,所以必須以數(shù)組公式的形式進(jìn)行輸入。Excel函數(shù)詳解:[166]FREQUENCY函數(shù)用法——工具/原料