본문 바로가기
프로그래밍 언어/C++

C++ 숫자 / 알파벳 / 공백 / 특수문자 판별 함수 정리 (isalpha, isdigit, isalnum, isspace, ispunct)

by Jo_Wick 2025. 9. 30.
반응형

1. isalpha

int isalpha(int ch);

 

  • 알파벳(A–Z 또는 a–z)이면 true
  • 즉, isupper(ch) || islower(ch)와 같음
isalpha('Q'); // true
isalpha('m'); // true
isalpha('7'); // false

 

2. isdigit

int isdigit(int ch);
  • 숫자 문자('0'–'9')이면 true
isdigit('5'); // true
isdigit('a'); // false

3. isalnum

int isalnum(int ch);

 

  • 알파벳(isalpha) 또는 숫자(isdigit)이면 true
  • 즉, 영문자+숫자만 허용하는 상황에서 자주 사용

 

isalnum('a'); // true
isalnum('Z'); // true
isalnum('9'); // true
isalnum('@'); // false

4. isspace

int isspace(int ch);
  • 공백 문자인지 확인
  • 공백 문자란? ' ', \t(탭), \n(줄바꿈), \v(수직 탭), \f(폼 피드), \r(캐리지 리턴)
isspace(' ');  // true
isspace('\n'); // true
isspace('a');  // false

5. ispunct

int ispunct(int ch);
  • 구두점 문자(punctuation)인지 확인
  • 알파벳·숫자·공백을 제외한 모든 인쇄 가능한 특수문자
  • 예: ! " # $ % & ' ( ) * + , - . / : ; < = > ? @ [ \ ] ^ _ { | } ~
ispunct('!');  // true
ispunct('@');  // true
ispunct('A');  // false
ispunct(' ');  // false

 

실전 예시

문자열에서 공백 제거

string s = " a b\tc\n";
string noSpace;

for (char ch : s) {
    if (!isspace((unsigned char)ch)) noSpace += ch;
}
cout << noSpace << endl; // "abc"

 

문자열에서 특수문자만 추출

string s = "Hello, World! 123 :)";
string puncts;

for (char ch : s) {
    if (ispunct((unsigned char)ch)) puncts += ch;
}
cout << puncts << endl; // ",!:)"

 

입력값 검증 (ID: 영문자+숫자만 허용)

bool validID(const string& id) {
    for (char ch : id) {
        if (!isalnum((unsigned char)ch)) return false;
    }
    return true;
}

 

반응형

댓글