Computer >> 컴퓨터 >  >> 프로그래밍 >> C++

C++ 입력값이 정수인지 문자열인지 판별하는 프로그램

사용자로부터 입력받은 값이 주어졌을 때, 해당 입력이 정수(integer)인지 문자열(string)인지 판별하는 것이 이번 글의 핵심 과제입니다.

여기서 말하는 정수란 0~9 사이의 숫자들로만 이루어진 조합을 의미하며, 문자열은 0~9를 제외한 문자들을 포함하는 조합을 의미합니다.

예시

입력 -: 123
출력 -: 123은 정수입니다

입력 -: Tutorials Point
출력 -: Tutorials Point는 문자열입니다

접근 방법

  • 데이터를 입력받습니다.
  • isdigit() 함수를 적용하여 주어진 입력이 숫자 문자인지 여부를 검사합니다. 이 함수는 정수형 인수 하나를 받으며, int 타입의 값을 반환합니다.
  • 최종 결과를 출력합니다.

isdigit() 함수는 <cctype> 헤더에 정의된 표준 라이브러리 함수로, 전달된 문자가 '0'~'9' 범위에 속하면 0이 아닌 값(true)을, 그렇지 않으면 0(false)을 반환합니다. 따라서 문자열의 모든 문자에 대해 이 함수를 호출했을 때 숫자가 아닌 문자가 하나라도 발견되면, 해당 입력은 문자열로 판단할 수 있습니다.

알고리즘

시작
단계 1 -> 숫자 또는 문자열 여부를 확인하는 함수 선언
    bool check_number(string str)
    반복문 For int i = 0 ~ i < str.length(), i++
        If (isdigit(str[i]) == false)
            return false
        End
    End
    return true
단계 2 -> Int main()
    문자열 str = "sunidhi" 설정
        IF (check_number(str))
            "는 정수입니다" 출력
        Else
            "는 문자열입니다" 출력
        End
        문자열 str1 = "1234" 설정
            IF (check_number(str1))
                "는 정수입니다" 출력
            Else
                "는 문자열입니다" 출력
            End
종료

예제 코드

#include <iostream>
using namespace std;

// 숫자인지 문자열인지 확인하는 함수
bool check_number(string str) {
    for (int i = 0; i < str.length(); i++)
        if (isdigit(str[i]) == false)
            return false;
    return true;
}

int main() {
    string str = "sunidhi";
    if (check_number(str))
        cout << str << " is an integer" << endl;
    else
        cout << str << " is a string" << endl;

    string str1 = "1234";
    if (check_number(str1))
        cout << str1 << " is an integer";
    else
        cout << str1 << " is a string";

    return 0;
}

출력 결과

sunidhi is a string
1234 is an integer

코드 설명

check_number() 함수는 문자열을 처음부터 끝까지 순회하면서 각 문자에 대해 isdigit()을 호출합니다. 숫자가 아닌 문자가 하나라도 발견되면 즉시 false를 반환하고, 모든 문자가 숫자라면 true를 반환합니다. main() 함수에서는 이 함수의 반환값에 따라 해당 입력이 정수인지 문자열인지 화면에 출력합니다.

이처럼 isdigit() 함수를 활용하면 별도의 복잡한 파싱 없이도 간단하게 입력값의 유형을 판별할 수 있어, 입력 유효성 검사 등 다양한 상황에서 유용하게 활용됩니다.