1. 程式人生 > >c++用cin和getline實現輸入回車結束輸入

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

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

最開始的想法是:

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
}