C++
 Computer >> コンピューター >  >> プログラミング >> C++

C++で入力された文字列が数値かどうかを判定する方法

本記事では、C++において与えられた文字列が「数値文字列」なのか、それとも通常の文字列なのかを判定する方法を解説します。数値文字列とは、すべての文字が 0〜9 の範囲に収まっている文字列のことです。

判定の基本的な考え方

解決策は非常にシンプルです。文字列を先頭から1文字ずつ順番に走査し、それぞれの文字が数字であるかどうかを確認します。すべての文字が数字であれば true を返し、途中に数字以外の文字が1つでも見つかった時点で false を返します。

サンプルコード

#include <iostream>
using namespace std;

bool isNumeric(string str) {
    for (int i = 0; i < str.length(); i++)
        if (isdigit(str[i]) == false)
            return false; // 数字以外の文字が見つかったら false を返す
    return true;
}

int main() {
    string str;
    cout << "Enter a string: ";
    cin >> str;
    if (isNumeric(str))
        cout << "This is a Number" << endl;
    else
        cout << "This is not a number";
}

実行結果(数値の場合)

Enter a string: 5687
This is a Number

実行結果(数値以外の場合)

Enter a string: 584asS
This is not a number

コードのポイント

このプログラムでは、標準ライブラリの isdigit() 関数を使用しています。この関数は引数として渡された文字が数字('0'〜'9')であれば真を、それ以外であれば偽を返します。

ループ内で isdigit() が偽を返した場合、その時点で即座に false を返すことで、無駄な処理を省いています。すべての文字のチェックが完了すれば、その文字列全体が数値文字列であると判断できます。

注意点

この方法では符号(+ や -)や小数点(.)を含む文字列は数値と判定されないことに注意してください。負の数や小数も扱いたい場合は、これらの文字を特別扱いする条件を追加する必要があります。また、より高度な検証を行いたい場合には、std::all_of とラムダ式を組み合わせる方法や、strtol・stod などの変換関数を利用して例外処理とともに判定する手法もあります。

  1. Python 3で入力された文字列が整数かどうか判定する方法

    isdigit()メソッドを使った整数判定Pythonの文字列(str)クラスにはisdigit()という便利なメソッドが用意されています。このメソッドは、文字列に含まれるすべての文字が数字であり、かつ文字列が空でない場合にTrueを返し、それ以外の場合はFalseを返します。小数点を含む数値(float)を入力した場合も、ピリオドは数字ではないためFalseになります。Python 3ではinput()関数でユーザーからの入力を受け取るので、次のように記述します。>>> x = input() 12345 >>> x.isdigit() Trueこのように

  2. Pythonで文字列が英数字のみかどうかを判定する方法【isalnum()と正規表現】

    Pythonでは、文字列が英数字(アルファベットと数字)のみで構成されているかどうかを簡単に判定できます。主な方法は2つあります。文字列クラスに組み込まれている isalnum() メソッドを使う方法と、正規表現を使う方法です。 isalnum()メソッドを使う方法 Pythonの文字列クラスには isalnum() というメソッドが用意されています。このメソッドを文字列に対して呼び出すと、文字列が英数字のみで構成されている場合に True を、記号などが含まれる場合には False を返します。 >>> 123abc.isalnum() True >>>