首頁 >後端開發 >C++ >如何在 C 中有效驗證使用者輸入的整數?

如何在 C 中有效驗證使用者輸入的整數?

Patricia Arquette
Patricia Arquette原創
2024-12-07 02:47:14300瀏覽

How Can I Effectively Verify Integer User Input in C  ?

驗證使用者輸入為整數

問題陳述

在C 程式中,確保使用者輸入是至關重要的是預期的格式,特別是在執行數學運算時。本文討論如何確定使用者提供的輸入是否為整數。如果輸入的不是整數,程式會提示使用者重新輸入有效的整數。

驗證使用者輸入的方法主要有兩種作為整數:

1。使用 cin.fail():

  • 使用 cin >> 讀取輸入。
  • 使用 if (cin.fail() 檢查輸入流的狀態).
  • 如果 cin.fail() 為 true,表示輸入不是整數。

2。使用 std::getline 和字串操作:

  • 使用 std::getline(std::cin, theInput) 將輸入捕獲為字串。
  • 檢查使用 if (theInput.find_first_not_of("0123456789") != 找出任何非數字字元的字串std::string::npos)。
  • 如果條件為真,則表示輸入包含非數字字元。

實作

以下是實作std::getline 和字串操作的程式碼片段做法:

#include <iostream>
#include <string>

int main() {

    std::string theInput;
    int inputAsInt;

    std::getline(std::cin, theInput);

    while(std::cin.fail() || std::cin.eof() || theInput.find_first_not_of("0123456789") != std::string::npos) {

        std::cout << "Error" << std::endl;

        if( theInput.find_first_not_of("0123456789") == std::string::npos) {
            std::cin.clear();
            std::cin.ignore(256,'\n');
        }

        std::getline(std::cin, theInput);
    }

    std::string::size_type st;
    inputAsInt = std::stoi(theInput,&amp;st);
    std::cout << inputAsInt << std::endl;
    return 0;
}

此程式碼不斷提示使用者輸入整數,直到輸入有效的整數。它處理使用者輸入非數字字元或提供空輸入的情況。

以上是如何在 C 中有效驗證使用者輸入的整數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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