사용자로부터 입력받은 값이 주어졌을 때, 해당 입력이 정수(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() 함수를 활용하면 별도의 복잡한 파싱 없이도 간단하게 입력값의 유형을 판별할 수 있어, 입력 유효성 검사 등 다양한 상황에서 유용하게 활용됩니다.