最近學校期末用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...