輸入不匹配資訊後cin語句的恢復

2022-01-23 19:37:11 字數 487 閱讀 7975

在使用cin輸入時,有時需要使用異常的輸入來結束cin的執行。

比如在乙個數字輸入的結尾處用乙個字元作為結尾輸入。

但是當涉及到多次的輸入時,重新整理輸入緩衝區就成為了必須要做的工作。

常用的迴圈輸入語句:

while(!cin.fail())

輸入失敗後,將會導致failbit被置為1。因此導致 迴圈終止。

但是如果需要再次輸入int資料,就需要清除failbit位並清空緩衝區。

用一下兩條語句執行:

cin.clear();

cin.sync(); 

這樣緩衝區就被清理乾淨,並可以正常等待輸入。

而且需要注意的是,在我測試過程中發現,如果failbit被置位,將導致後面的cin語句無法執行。

另外需要注意的是,由於在char型別變數和int型別變數存在隱式轉換,所以cin可以在要求出入int時讀取char資料。

但後果是int型別變數亂碼,且failbit被置位。

scanf和cin輸入型別不匹配時造成的死迴圈問題

下面兩段 要實現的功能是往整數變數i中輸入乙個資料,輸入數字1時退出,然而當輸入乙個字元時,整個程式會變成乙個死迴圈。c int i 0 while i 1 c語言 int i 0 while i 1 原因 造成死迴圈的原因也很簡單,當第一次通過scanf函式讀入整數時,如果我們輸入的是乙個字元,那...

不記錄input輸入框之前輸入的資訊

在表單的設計過程中,當我們在瀏覽器表單輸入資訊的時候,input文字框會儲存之前提交的表單資訊,當我們雙擊input文字框時之前輸入的文字就會出現,當然,這僅在某些時候用到,但是這樣會很容易暴露使用者的隱私。要使input表單輸入框不儲存之前輸入過的資訊,有兩種方法可以實現。方法一 在不想使用快取的...

scanf 函式的引數輸入型別不匹配問題

scanf 函式的引數輸入型別不匹配問題 這是我在csdn論壇上見到的問題,這個錯誤有時候會讓人莫名其妙。include main 當輸入a 回車 後,會直接跳過下面 個scanf語句,直接輸出為 123 t 原因 對於scanf d c a,c scanf語句執行時,首先試圖從緩衝區中讀入乙個 d...