首頁 > 後端開發 > C++ > 如何確保使用 C 的 `cin` 只輸入數字?

如何確保使用 C 的 `cin` 只輸入數字?

Mary-Kate Olsen
發布: 2024-12-16 07:47:10
原創
771 人瀏覽過

How Can I Ensure Only Numeric Input Using C  's `cin`?

增強輸入驗證:僅接受數位輸入

使用cin 接收用戶輸入時,強制資料正確性至關重要,尤其是在處理資料時與數值。提供的程式碼遇到一個問題,其中非數字字元(例如“1x”中的“x”)被忽略,可能會導致錯誤的結果。

穩健的解決方案

要修正這個問題,更徹底的方法是使用std::getline 和std::string 捕捉整個輸入行,包括任何非數字字元。以下增強的程式碼片段示範了這種方法:

#include <string>
#include <sstream>

double enter_number()
{
    double number;
    std::string line;
    while (std::getline(std::cin, line)) {
        std::stringstream ss(line);
        if (ss >> number) {
            if (ss.eof()) { // Success
                break;
            }
        }
        std::cout << "Invalid input" << std::endl;
        std::cout << "Try again" << std::endl;
    }
    return number;
}
登入後複製

解釋實作

  • std::getline 捕捉整個輸入行,包括空格和特殊字符字符。
  • std::stringstream 用於將輸入行轉換為 double資料型別。
  • >>運算子從輸入行中提取數值。
  • eof 檢查確保在退出循環之前整行已成功轉換為 double。

結論

透過這種增強的方法,任何輸入非數字字元的嘗試都將被標記為無效輸入,並且使用者將被提示重新輸入有效號碼。此解決方案有效解決了原始程式碼中出現的問題,確保僅接受有效的數字輸入,而不管輸入行中是否有任何其他非數字字元。

以上是如何確保使用 C 的 `cin` 只輸入數字?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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