無效輸入和cin 的無限循環
使用cin 讀取輸入時,如果輸入不屬於則可能會發生無限循環預期類型。當嘗試輸入數字但意外輸入字元時,這個問題尤其明顯。
問題源自於 cin 遇到無效輸入時進入失敗狀態。在這種情況下,cin 將不再提示輸入,從而導致無限循環。
為了防止這種行為,一個解決方案是檢查 cin 是否處於失敗狀態。如果是,則清除失敗狀態,並使用 cin.ignore() 丟棄錯誤輸入。這允許 cin 返回正常操作並提示進一步輸入。
if (cin.fail()) { cout << "ERROR -- Invalid input detected" << endl; cin.clear(); cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n'); }
或者,您可以使用 std::getline() 將輸入作為字串讀取,並在嘗試之前執行更複雜的驗證檢查將其轉換為數字。這種方法提供了更大的靈活性,並允許更複雜的輸入驗證。
以上是如何防止「cin」無效輸入導致的無限循環?的詳細內容。更多資訊請關注PHP中文網其他相關文章!