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