首頁 > 後端開發 > C++ > 如何防止 C 中未處理的輸入類型不匹配導致的無限循環?

如何防止 C 中未處理的輸入類型不匹配導致的無限循環?

Susan Sarandon
發布: 2024-12-23 15:40:10
原創
989 人瀏覽過

How Can I Prevent Infinite Loops Caused by Unhandled Input Type Mismatches in C  ?

問題:未處理的輸入類型不匹配中的無限循環

在需要數字輸入的循環中,如果非- 數字輸入透過cin 提供。這種行為可以透過理解 cin 如何處理輸入來解釋。

解釋:

當 cin 在期望數值的同時遇到非數字輸入時,它會進入失敗狀態。在這種狀態下,cin 將停止提示進一步輸入,導致循環繼續而不等待使用者輸入。

解決方案:處理輸入類型錯誤

避免無限循環在這種情況下循環,檢測和處理輸入類型錯誤至關重要。一種方法是檢查 cin 是否處於失敗狀態:

if (cin.fail()) {
  cout << "ERROR: Invalid input" << endl;

  // Clear the fail state
  cin.clear();

  // Discard bad input characters (e.g., using numeric_limits or ignore())
}
登入後複製

透過處理失敗狀態,可以將 cin 重設為正常操作狀態,從而允許在解決錯誤後繼續循環。

其他技術:

為了更強大的輸入驗證,請考慮使用以下技術技巧:

  • 將輸入讀入字串並在轉換為數字類型之前執行自訂檢查。
  • 在自訂輸入驗證函數中使用正規表示式。
  • 使用函式庫專用於輸入驗證,例如 Boost.Validation 或 Validata。

以上是如何防止 C 中未處理的輸入類型不匹配導致的無限循環?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板