C++で入力された値が数値であるかどうかを判定の方法

C++において、次のように入力されたものが数値かどうかを判断できる

  1. isdigit()関数を使用する:isdigit()関数は、C++標準ライブラリにある関数で、ある文字が数字かどうかを判定します。この関数を使って入力文字列の中の文字を1文字ずつ調べれば、すべて数字かどうかがわかります。
#include <iostream>
#include <cctype> // 包含isdigit()函数的头文件

int main() {
    std::string input;
    std::cout << "请输入一个字符串:";
    std::cin >> input;

    bool isNumber = true;
    for (char c : input) {
        if (!std::isdigit(c)) {
            isNumber = false;
            break;
        }
    }

    if (isNumber) {
        std::cout << "输入的是数字。\n";
    } else {
        std::cout << "输入的不是数字。\n";
    }

    return 0;
}
  1. try-catch構文を使用します:入力された文字列が数値に変換できる場合は数値として認識し、変換できない場合はそれ以外のものとして認識します。std::invalid_argumentまたはstd::out_of_range例外をキャッチすることで実現できます。
#include <iostream>
#include <string>
#include <stdexcept> // 包含std::invalid_argument和std::out_of_range异常的头文件

int main() {
    std::string input;
    std::cout << "请输入一个字符串:";
    std::cin >> input;

    try {
        double number = std::stod(input);
        std::cout << "输入的是数字。\n";
    } catch (const std::invalid_argument& ia) {
        std::cout << "输入的不是数字。\n";
    } catch (const std::out_of_range& oor) {
        std::cout << "输入的数字超出范围。\n";
    }

    return 0;
}

1つ目の方法は整数か小数の判定に使えて、2つ目の方法は任意の実数の判定に使えますが、その分パフォーマンスを消費します。用途に応じて適宜選択してください。

bannerAds