ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [c++] isdigit() 함수
    Programming/c++ 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

    'Programming > c++' 카테고리의 다른 글

    [c++] unique 함수  (0) 2022.08.01
    [c++] std::accumulate 함수 vector sum  (0) 2022.07.16
    [c++] Visual Studio Code c++ 설정  (0) 2022.06.26
    Jsoncpp 적용하기 (Visual Studio 2017) 방법1  (0) 2021.09.14
    Jsoncpp 빌드  (0) 2021.09.13

    댓글

© 2022. code-space ALL RIGHTS RESERVED.