先看一段**。
vector<
int> vecnum;
int num =0;
while
(cin >> num)
vecnum.
push_back
(num)
;cin >> num;
這是乙個簡單的**。但是這裡會有乙個問題,就是
cin >> num;
//位於迴圈外的輸入
這行**無法輸入任何數值。原因是什麼呢?
我們知道在迴圈中,我們想要結束迴圈的條件是cin >> num
不為真,那麼,我們就需要在輸入結束的時候,先按下回車鍵
然後按下ctrl+z
(在windows系統中)。這時候,我們需要注意一點,那就是,此時輸入流的狀態為置位狀態,那麼它就沒辦法進行輸入。
所以這裡,如果還想輸入的話,我們需要對輸入流進行復位。那麼我們可以新增以下**就行了。
cin.
clear()
;
整體的**如下:
vector<
int> vecnum;
int num =0;
while
(cin >> num)
vecnum.
push_back
(num);
cin.
clear()
;//將輸入流復位
cin >> num;
死迴圈中的cin
在編寫程式時,遇到了乙個致命的問題,原本是想使用cin輸入乙個int型的數值,但是錯誤的輸入了char或者string型,導致程式進入死迴圈。類似程式如下 include using namespace std int main while i 0 return 0 定義了乙個int型的 i 但是當...
C 中while迴圈中cin語句被跳過問題解析
今天在寫 的時候,遇到了乙個非常奇怪的問題 while true if select 2 else 這段 的本意是想要規範輸入,提高容錯率。但是當我輸入乙個字元比如 a 的時候,while迴圈中的cin語句將會被跳過,進入無限的死迴圈。上網查閱了很多資料,發現了問題所在 msdn上cin的定義如下 ...
while迴圈中break和continue的區別
break 條件一旦滿足,就直接退出整個迴圈,而不再執行迴圈 continue 在迴圈體內部,一旦發現了continue這個關鍵字,會直接跳到迴圈的條件判斷,不會執行continue後續的任何 continue就是繼續,繼續讓 繼續到條件迴圈判斷,而不再執行continue後續的語句 break演示...