while迴圈中將cin輸入作為條件問題 擴充套件

2021-10-06 01:32:50 字數 823 閱讀 4885

先看一段**。

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演示...