Computer >> 컴퓨터 >  >> 프로그래밍 >> C 프로그래밍

C/C++ iswpunct() 함수 완벽 정리: 와이드 문자 구두점 검사 방법

iswpunct() 함수란?

C/C++에서 iswpunct() 함수는 전달된 와이드 문자(wide character)가 구두점(punctuation)인지 여부를 검사하는 데 사용됩니다. 만약 해당 문자가 구두점이 아니라면 0을 반환하고, 구두점이라면 0이 아닌(non-zero) 값을 반환합니다. 이 함수는 cwctype 헤더 파일에 선언되어 있으므로, 사용하기 위해서는 반드시 해당 헤더를 포함해야 합니다.

참고로 일반 문자를 검사하는 ispunct() 함수와 달리, iswpunct()는 유니코드 등 확장된 문자 집합을 다루는 wint_t 타입의 와이드 문자를 대상으로 동작한다는 점이 특징입니다.

함수 구문(Syntax)

int iswpunct(wint_t character);
  • character: 구두점인지 검사할 와이드 문자(wint_t 타입)
  • 반환값: 구두점이 아니면 0, 구두점이면 0이 아닌 값

사용 예제

다음은 iswpunct() 함수의 실제 동작을 보여주는 간단한 예제 코드입니다.

#include<cwctype>
#include<stdio.h>
using namespace std;
int main() {
    wint_t a = '!';
    wint_t b = 'a';
    if(iswpunct(a))
        printf("The character is a punctuation.");
    else
        printf("\nThe character is not a punctuation.");
    if(iswpunct(b))
        printf("\nThe character is a punctuation.");
    else
        printf("\nThe character is not a punctuation.");
    return 0;
}

실행 결과

The character is a punctuation.
The character is not a punctuation.

코드 설명

위 프로그램에서는 두 개의 와이드 문자 변수 ab를 각각 '!''a'로 초기화했습니다.

wint_t a = '!';   // 느낌표(!)는 구두점에 해당
wint_t b = 'a';   // 알파벳 'a'는 구두점이 아님

if(iswpunct(a))   // '!'는 구두점이므로 참 → 구두점 메시지 출력
if(iswpunct(b))   // 'a'는 구두점이 아니므로 거짓 → 비구두점 메시지 출력

첫 번째 검사에서 '!'는 구두점에 해당하므로 iswpunct(a)가 참을 반환하여 "The character is a punctuation." 문장이 출력됩니다. 반면 두 번째 검사에서 'a'는 알파벳 문자이기 때문에 함수가 0을 반환하고, "The character is not a punctuation." 문장이 출력됩니다.

정리

iswpunct()는 와이드 문자가 구두점인지 판별하는 유용한 함수로, 입력 유효성 검사나 텍스트 파싱 작업에서 자주 활용됩니다. cwctype 헤더를 포함하고 wint_t 타입의 문자를 인자로 전달하기만 하면 손쉽게 구두점 여부를 확인할 수 있습니다.