首頁 > 後端開發 > C++ > 如何使用 C 流可靠地處理無效數字輸入?

如何使用 C 流可靠地處理無效數字輸入?

Barbara Streisand
發布: 2024-12-28 15:11:14
原創
998 人瀏覽過

How Can C   Streams Be Used to Reliably Handle Invalid Numeric Input?

使用C Streams 解決無效輸入

問題:

提供的代碼旨在防止非數字字符接受作為輸入。但是,它無法處理輸入在有效數字後包含字元的情況。

建議的解決方案:

要解決此問題,我們建議不同的方法使用 std::getline 和 std::string。

程式碼片段:

#include <string>
#include <sstream>

int main() {
    std::string line;
    double d;
    while (std::getline(std::cin, line)) {
        std::stringstream ss(line);
        if (ss >> d) {
            if (ss.eof()) {   // Success
                break;
            }
        }
        std::cout << "Error!" << std::endl;
    }
    std::cout << "Finally: " << d << std::endl;
}
登入後複製

說明:

此修訂後的解決方案遵循以下步驟:

  1. 此修訂後的解決方案遵循以下步驟:
  2. 閱讀全文line: 使用std::getline,輸入的整行,包括空格和特殊字符,是取入字串變數 line。
  3. 將字串轉換為 double: 建立一個 std::stringstream 物件 ss 來儲存字串 line。然後使用該流使用 >> 來提取數值。
  4. 檢查轉換是否成功:如果 ss 流成功提取數字並到達字串末尾,則表示數字輸入有效。
處理錯誤:

如果轉換失敗,會顯示錯誤訊息。

這種方法確保僅接受有效的實數作為輸入,無論輸入中是否有任何尾隨字元或空格。

以上是如何使用 C 流可靠地處理無效數字輸入?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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