[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()이 0이 아닌 숫자를 리턴하면 모두 숫자로 구성되었다고 판단할 수 있습니다. 이것으로 문자열이 정수 형태의 숫자인지 판별할 수 있습니다.

#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

Loading script...
codechachaCopyright ©2019 codechacha