[C++] isdigit(), どの文字が数字かを確認する

C++ では、 isdigit() は、引数として渡された文字が 0 ~ 9 の間の数字であれば 0 以外の値を返し (true)、数値でなければ 0 (false) を返します。したがって、このAPIを使用して文字列が数値であるかどうかを判断できます。

1. Syntax

引数で int 型の文字 1 つを渡され、数字なら 0 でない値を返します。数字でない場合は0を返します。

int isdigit(int c);

2. Example 1

引数としてASCII文字を渡し、その文字が数値であるかどうかを判断する例です。数字の場合は0以外の数字を返し、数字以外の場合は0を返します。

#include <iostream>

using namespace std;

int main()
{
    cout << "isdigit('1') : " << isdigit('1') << "\n";
    cout << "isdigit('5') : " << isdigit('5') << "\n";
    cout << "isdigit('a') : " << isdigit('a') << "\n";
    cout << "isdigit('b') : " << isdigit('b') << "\n";
}

Output:

isdigit('1') : 4
isdigit('5') : 4
isdigit('a') : 0
isdigit('b') : 0

3. Example 2

以下は、文字列配列の各文字について数字であるかどうかを判断する例です。

#include <iostream>

using namespace std;

int main()
{
    char str[] = "GA01";

    cout << "isdigit('str[0]') : " << isdigit(str[0]) << "\n";
    cout << "isdigit('str[1]') : " << isdigit(str[1]) << "\n";
    cout << "isdigit('str[2]') : " << isdigit(str[2]) << "\n";
    cout << "isdigit('str[3]') : " << isdigit(str[3]) << "\n";
}

Output:

isdigit('str[0]') : 0
isdigit('str[1]') : 0
isdigit('str[2]') : 4
isdigit('str[3]') : 4

4. Example 3

以下は、文字列が数値であるかどうかを判断する例です。

文字列内のすべての文字に対して、isdigit()がゼロ以外の数字を返すと、すべて数字で構成されていると判断できます。これにより、文字列が整数型の数値であるかどうかを判断できます。

#include <iostream>

using namespace std;

int main()
{
    char str[] = "1234";

    bool isStringNumber = true;
    for (int i = 0; i < strlen(str); i++) {
        if (isdigit(str[i]) == 0) {
            isStringNumber = false;
        }
    }

    if (isStringNumber) {
        cout << str << " is number";
    }
    else {
        cout << str << " is not number";
    }
}

Output:

1234 is number

References

codechachaCopyright ©2019 codechacha