c 用cin和getline實現輸入回車結束輸入

2021-07-28 20:58:22 字數 579 閱讀 4078

今天做一道測試題遇到了乙個麻煩,我想要先讀入乙個字串,再讀入乙個整數,迴圈往復,直到字串是空,也就是說回車鍵結束迴圈。

最開始的想法是:

string s;int d;

while(cin>>s)

但是,發現其實按enter鍵並不會結束,只有d的輸入不是整數,才會結束。或者ctrl+z, 查了下資料,原因是,cin>>s是有返回值的,只要s滿足型別條件,就會return true,一直執行下去,而cin會忽略空格或者enter,因此,enter後不會結束迴圈。

後來看到網上說用getline可以,試了下:

while (getline(cin,s))

結果只輸入一回合就結束了迴圈,問題在**呢?

while (getline(cin,s))

這樣就行了,原來需要用乙個getchar去儲存d輸入後的回車。

如果沒有這個d,是不需要這個getchar()的。

while (getline(cin,s))

關於cin的get 和getline 成員函式

cin是使用空白 空格,製表符,換行符 來確定字串的結束位置這意味著cin在獲取字元陣列時只讀取乙個單詞。讀取該單詞後cin自動在其結尾增加空字元。這有時候很方便,有時候有使我們煩惱 如果我要輸入一句話來存入字串中呢?要將整條短語而不是乙個單詞作為字串輸入,需要採用另一種字串讀取方法。具體地說,需要...

關於cin和getline讀入字串

今天做天梯賽訓練題 新得知了乙個知識點 那就是cin和getline cin string s 讀入字串的不同。cin 1.cin從緩衝區讀字串時,如果第乙個字元是空格 換行或者tab這些字元時,cin會自動忽略並等待正經字元。2.cin如果第乙個字元讀到了正經字元,那麼接下來如果cin遇到空格 換...

c實現getline函式

getline函式可以獲取檔案中的一行資料。原函式形式為 ssize t getline char linepter,size t n,file stream 返回型別ssize t為有符號整形,其值為獲取的字元數,檔案結束則返回 1,包括換行符 n 但不包括字串結束符 0 linepter用來儲存...