首頁 > 後端開發 > C++ > 如何在「atoi()」之外驗證 C 中的數字輸入?

如何在「atoi()」之外驗證 C 中的數字輸入?

Linda Hamilton
發布: 2024-11-21 21:01:12
原創
279 人瀏覽過

How to Validate Numeric Input in C   Beyond `atoi()`?

驗證 C 中的數字輸入

在處理整數輸入的程式中,確保使用者提供有效的數字至關重要。不幸的是,atoi() 函數在處理多位整數時存在不足。本文探討了驗證數位輸入的替代方法。

使用失敗位元

C 的輸入流 (cin) 在遇到無法解析的輸入時設定失敗位元。可以利用它來驗證輸入,如下所示:

int n;
cin >> n;
if(!cin) {
    // User did not input a number
    cin.clear();
    cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
}
登入後複製
  • if(!cin) 檢查是否設定了失敗位元。
  • cin.clear() 重置流狀態。
  • cin.ignore() 會跳過無效輸入,從而允許

處理輸入溢位

當整數超過最大允許值時,cin 也會設定failbit。為了防止這種情況,請在讀取輸入之前檢查流狀態:

while(!cin.eof()) {
    int n;
    cin >> n;
    if(!cin) {
        // Input error occurred
        cin.clear();
        cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
    }
    else {
        // Valid input
        process(n);
    }
}
登入後複製

此循環繼續讀取並驗證輸入,直到到達文件末尾 (EOF)。

其他替代品

  • C 11 stringstream: 根據輸入建立字串流並嘗試將其轉換為整數。
  • 正規表示式 (regex): 使用正規表示式強制執行特定的數字格式。
  • Boost 函式庫: 使用 Boost 的 boost::regex 或 boost::lexical_cast輸入驗證。

以上是如何在「atoi()」之外驗證 C 中的數字輸入?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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