首頁 >後端開發 >C++ >如何讓 C 中的 cin 只接受數位輸入?

如何讓 C 中的 cin 只接受數位輸入?

DDD
DDD原創
2024-12-17 07:34:25619瀏覽

How to Make `cin` Accept Only Numerical Input in C  ?

將cin 設為只讀數字

使用cin 強制進行數位輸入可能會帶來挑戰,尤其是在處理混合輸入類型時。本文研究了一種解決方案,以確保 cin 只接受數字值。

在提供的程式碼中,while 迴圈嘗試透過忽略非數字字元來修正無效輸入。然而,這種方法在處理多個輸入時面臨限制。

解決方案:使用std::getline 和std::string

要克服這個障礙,我們可以使用更全面的方法:

  1. 使用下列指令讀取整行std::getline():這會將使用者輸入的完整行讀取為字串。
  2. 使用 std::stringstream: 將字串轉換為雙精確型🎜>

      從輸入行建立字串流ss。
    • 嘗試提取雙重使用>>
  3. 驗證轉換:

      檢查轉換是否成功以及流是否已到達末尾字串的(eof())。
    • 如果成功,則退出循環。否則,顯示錯誤訊息。
這是一個範例實作:

#include <sstream>
#include <string>

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;
}
此解可確保正確處理整數和浮點數,非數字字元完全丟棄。

以上是如何讓 C 中的 cin 只接受數位輸入?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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