c++用cin和getline實現輸入回車結束輸入
阿新 • • 發佈:2018-12-31
今天做一道測試題遇到了一個麻煩,我想要先讀入一個字串,再讀入一個整數,迴圈往復,直到字串是空,也就是說回車鍵結束迴圈。
最開始的想法是:
string s;int d;
while(cin>>s){
cin>>d;
// precess
}
但是,發現其實按enter鍵並不會結束,只有d的輸入不是整數,才會結束。或者ctrl+Z, 查了下資料,原因是,cin>>s是有返回值的,只要s滿足型別條件,就會return true,一直執行下去,而cin會忽略空格或者enter,因此,enter後不會結束迴圈。
後來看到網上說用getline可以,試了下:
while (getline(cin,s)){
cin>>d;
// process
}
結果只輸入一回合就結束了迴圈,問題在哪裡呢?
while (getline(cin,s)){
cin>>d;
getchar();
// process
}
這樣就行了,原來需要用一個getchar去儲存d輸入後的回車。
如果沒有這個d,是不需要這個getchar()的。
while (getline(cin,s)){
//getchar(); //不需要
// process
}