1. 程式人生 > >cin結束後再次執行輸入操作

cin結束後再次執行輸入操作

今天使用cin迴圈讀入int型變數,while(cin>>i) 發現結束迴圈後想再次接受鍵盤輸入時不成功,直接退出了。
這是什麼原因呢?
cin遇到ctrl+z便認為輸入結束,也就是不再接受鍵盤的輸入(但是它會讀取緩衝區已經存在的資料),此時ctrl+z還是會留在緩衝區內!!!!!!cin再去讀的時候,發現緩衝區存在ctrl+z(上次跳出迴圈遺留下的),於是它就走了,也就是啥都沒讀到。所以使用者也無法輸入。
解決辦法
就是及時清除緩衝區

也就是在程式跳出迴圈後利用函式

cin.clear();
cin.ignore();