關於C 的cin的錯誤輸入的問題以及解決辦法

2021-09-24 23:58:22 字數 623 閱讀 5549

最近學校期末用c++做乙個實訓專案,在用到cin獲得使用者輸入的時候考慮到使用者輸入的不確定性,要規範cin返回的值,否則會造成意想不到的結果。

先來乙個簡單的例子:

int num_input;

cin>>num_input;

while(num_input<=0)

cout《這串看起來很平常的**,當我們隨便輸入乙個字元時,便會陷入死迴圈,一直重複列印"請輸入正數"。

出現這種結果的原因是錯誤輸入使cin進入了一種錯誤的狀態(此時cin會返回0),在這種情況下程式會持續輸出cout後面的字串並忽略後面的cin語句。

之前在網上找到一種解決辦法是:

int num_input;

cin>>num_input

while(cin.fail())

cin.ignore()作用是忽略掉緩衝區的內容,直到遇到eof為止

這裡如果cin錯誤,先將cin的錯誤狀態清除,再將輸入緩衝區的內容忽略掉,最後再重新輸入。

這個方法不僅可以用於防止輸入字元陷入死迴圈,也可以防止輸入過大的數而導致錯誤。

C 關於vector的輸入和cin的聯絡

我還是見識短淺,學到現在為止,我並沒有見過vector還可以用cin去進行輸入的寫法 例子 vectorv1,v2 開闢一維陣列 v1.resize 100 v2.resize 100 for int i 0 i 6 i cin v1 i cin v2 i 為什麼不resize直接cin輸入程式會崩...

C 關於cin的使用

注 以下為個人見解,有可能錯誤,歡迎批評指出!cin的常用形式 1.cin 2.cin.get 3.cin.getline 基礎 當呼叫cin函式時,會自動從鍵盤緩衝區的讀取資料 如果沒有就請求使用者輸入 在讀取的過程中,若先遇到space enter tab這些會自動忽略掉。cin的輸入是不是逐個...

學習C 文字的輸入cin

for while do while迴圈語句另外還有if和switch選擇語句。另外重點是cin是如何處理字元輸入的。strcmp word,book 需要包含標頭檔案 當word大於 book 時,結果大於0 str1 str2 str1 str2 str1 str2 直接用關係符來比較,stri...