C++에서 값이 숫자인지 아닌지 판단하는 방법에 대해 알아보겠습니다.
값이 숫자인지 확인해주는 함수로 isdigit 가 있습니다.
isdigit 작성 방법을 보겠습니다.
isdigit(값)
isdigit 함수 반환 값은 입력한 값이 숫자이면 0 이외의 값, 숫자가 아니면 0이 반환을 합니다.
예를 들어 isdigit 함수에 a을 설정하면 0이 반환되고,
1을 설정하면 0 이외의 값을 반환합니다.
샘플 소스를 보겠습니다.
#include<iostream>
#include<cctype>
int main(){
printf("1 : %d\n", isdigit('1'));
printf("2 : %d\n", isdigit('2'));
printf("a : %d\n", isdigit('a'));
printf("b : %d\n", isdigit('b'));
}
결과
1 : 1
2 : 1
a : 0
b : 0
값이 숫자인 경우에는 0 이외의 값이, 숫자가 아닌 경우에는 0을 반환했습니다.
문자열에 숫자가 아닌 값이 포함되어 있는지 확인하는 샘플을 보겠습니다.
#include<iostream>
#include<cctype>
int main(){
char arr[11] = "1234a567d9";
for (int i = 0; i < 11; ++i) {
printf("arr[%d]\t char: %c\tisdigit: %d\n", i, arr[i], isdigit(arr[i]));
}
return 0;
}
결과
arr[0] char: 1 isdigit: 1
arr[1] char: 2 isdigit: 1
arr[2] char: 3 isdigit: 1
arr[3] char: 4 isdigit: 1
arr[4] char: a isdigit: 0
arr[5] char: 5 isdigit: 1
arr[6] char: 6 isdigit: 1
arr[7] char: 7 isdigit: 1
arr[8] char: d isdigit: 0
arr[9] char: 9 isdigit: 1
arr[10] char: isdigit: 0
반복문을 사용해 문자를 하나씩 isdigit 함수에 대입해 숫자인지 아닌지 판단하고 있습니다.
숫자인 경우에는 1, 숫자가 아닌 경우에는 0을 반환합니다.
댓글