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.
코드 설명
위 프로그램에서는 두 개의 와이드 문자 변수 a와 b를 각각 '!'와 '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 타입의 문자를 인자로 전달하기만 하면 손쉽게 구두점 여부를 확인할 수 있습니다.