cin是istream的乙個物件,而istream繼承自basic_istream,所以cin擁有basic_istream的所有成員。因為cin是乙個輸入流,一些問題只能在執行臺的時候才能夠出現,比如當要求給乙個整型複製的時候,輸入的有可能是其他型別或者溢位了,這樣在執行臺的時候就會導致程式退出,或者造成其他方面的影響,比如如果輸入的過多了,那除了賦給變數的 那些輸入之外還有剩餘的,這些剩餘的輸入將殘留在輸入快取中,就會導致在下面需要輸入的時候不再接受輸入,而直接從快取中獲得,這就要求我們有這樣的判斷,判斷是否輸入正確,如果輸入不正確就要進行相應的處理。
首先判斷cin流是否正常,可以通過if(cin),來判斷是不是型別正確,輸入合法,cin.fail(),判斷是否失敗,如果失敗,當前操作無影響,接下來的輸入則不能進行,設定failbit為1,cin.bad()判斷流是否破壞,如果流已經破話,那麼任何輸入也無效了。cin.good(),判斷是否正常,如果正常,接下來的操作還能繼續。
如果確定cin不正常,那就得把快取中的資料清空,還得把各個標誌位清除,清除標誌位的函式為cin.clear(),清除快取可以使用flushall(),將所有快取清除也可以把指定的流快取清除,清除指定快取流的方法是fflush(stdin);
清理cin輸入緩衝區 在C 中清除輸入緩衝區
問題引入 用過c 的都明白,在運用輸入過程中會出現不經意間意外輸入錯誤的情況,導致之後的輸入無效,c 內部會繼續使用之前的意外輸入,使得程式執行錯誤。輸入緩衝區 所有從鍵盤輸入的資料,不管是字元還是數字,都是先儲存在記憶體中的乙個緩衝區裡面,叫做鍵盤緩衝區,簡稱輸入緩衝區或者輸入流。當一次鍵盤輸入結...
C 中cin的使用
首先對於cin,常見的輸入流 1.在遇到空格和回車時將輸入的數字傳給引數,當輸入的數字個數超過引數個數時 將超過的存入輸入緩衝流中,當有後來的引數需要輸入資料時,再傳遞給它。2.向變數傳值時,不需要帶符號 也不要指明型別,這樣就無法檢查變數輸入的正確性。如下在迴圈內部輸入不合法的變數值,那麼將陷入死...
c清除緩衝區資料
如何清空輸入緩衝區的內容 c標準規定 fflush stdout 緩 存的。對 於輸入 stdin 它是沒有定義的。但是有些編譯器也定義了 fflush stdin 的實現,比如微軟的 vc。其它編譯器是否也定義了 fflush stdin 的實現應當查詢它的手冊。gcc編譯器沒有定義它的實現,所以...