首頁 >後端開發 >C++ >如何防止「cin」無效輸入導致的無限循環?

如何防止「cin」無效輸入導致的無限循環?

Susan Sarandon
Susan Sarandon原創
2024-12-31 14:48:12495瀏覽

How to Prevent Infinite Loops Caused by Invalid Input with `cin`?

無效輸入和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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn