Programming/c++
[c++] isdigit() 함수
owls
2022. 5. 28. 16:24
728x90
- isdigit 함수 : 매개변수 값이 숫자인지 검사
알파벳인지, 숫자인지 검사할 때 유용한 함수입니다.
1. isdigit 함수 헤더 파일
#include <ctype.h> // c언어
#include <cctype> // c++
2. 함수 원형
int isdigit(int c);
함수의 인자(argument)로는 int형 한개를 넘겨받습니다.
3. return 값(반환 값)
- FALSE : 0
- TRUE : 0이 아닌 값
4. 예제
int main() {
string str = "ABCDEFG123456"; //
for (auto s : str) {
cout << isdigit(s) << endl;
}
return 0;
}
아래와 같은 결과 값이 출력됩니다.
int main() {
string str = "ABCDEFG123456"; //
for (auto s : str) {
if (isdigit(s)) {
cout << "숫자입니다~" << endl;
}
else {
cout << "알파벳입니다~" << endl;
}
}
return 0;
}
이렇게 if문을 사용하여 검사할 수 있습니다.
여기서 이상한 점!!
isdigit 함수의 인자 값을 int형이 아닌 range based for문의 string의 변수로 받았습니다.
for(auto s : str)
이때! string 을 배열로 접근하게 되어 s는 char형이 됩니다.
for(char s : str)
따라서, 두 형식은 같은 뜻입니다.
for(auto s : str){
if(isdigit(s)){
cout << "숫자입니다~"<<
}
}
isdigit함수의 인자를 char형으로 받았습니다.
인자는 int형으로 선언되어 있는데,, 왜 그럴까요??
아스키코드(ASCII)를 보면 알 수 있습니다.
s == A 라면 65로 인자를 인식하고,
s == 1 이라면 49로 인자를 인식하게 됩니다.
char 형은 아스키코드 값에 따라 처리됩니다~
- 아스키코드란?
컴퓨터는 0과 1 로 된 2진수로만 인식하기때문에 문자도 숫자로 인식합니다.
문자를 식시키기 위해 여러가지 인코딩 방식이 있는데 그 중에서 아스키코드 방식이 있습니다.
-자주 사용되는 아스키코드
아스키코드 | 10진수 |
0~9 | 48~57 |
A~Z (대문자) | 65~90 |
a~z (소문자) | 97~122 |
728x90