C++ 프로그래밍에서 iswspace() 함수는 전달된 와이드 문자(wide character)가 공백 문자(whitespace)인지 여부를 판별하는 표준 라이브러리 함수입니다. 이 글에서는 iswspace() 함수의 개념, 구문, 작동 방식, 반환값 그리고 실전 예제까지 자세히 살펴보겠습니다.
iswspace() 함수란?
iswspace() 함수는 C++의 내장(built-in) 함수로, <cwctype> 헤더 파일에 정의되어 있습니다. 이 함수는 매개변수로 전달된 와이드 문자가 공백 문자인지 검사하는 역할을 합니다.
iswspace()는 isspace() 함수의 와이드 문자 버전이라고 할 수 있습니다. 즉, isspace()와 동일한 역할을 수행하지만, 일반 문자 대신 와이드 문자를 지원한다는 점이 차이입니다. 공백 문자에는 스페이스(' '), 탭(\t), 줄바꿈(\n), 수직 탭(\v), 폼 피드(\f), 캐리지 리턴(\r) 등이 포함됩니다.
함수는 인수로 전달된 문자가 공백 문자이면 0이 아닌 정수값(true)을 반환하고, 그렇지 않으면 0(false)을 반환합니다.
구문
int iswspace(wint_t ch);
이 함수는 단 하나의 매개변수만 받습니다. 바로 검사 대상이 되는 와이드 문자입니다. 인수는 wint_t 타입 또는 WEOF로 캐스팅되어 전달됩니다.
wint_t는 정수 계열(integral type) 데이터를 저장할 수 있는 자료형입니다.
반환값
함수는 정수값을 반환하며, 그 값은 다음 두 가지 중 하나입니다.
- 0 : 전달된 문자가 공백 문자가 아닌 경우 (false)
- 0이 아닌 값 : 전달된 문자가 공백 문자인 경우 (true)
예제 1 : 단일 문자 검사
#include <iostream>
#include <cwctype>
using namespace std;
int main() {
wint_t a = '.';
wint_t b = ' ';
wint_t c = '1';
iswspace(a) ? cout << "\n공백 문자입니다." : cout << "\n공백 문자가 아닙니다.";
iswspace(b) ? cout << "\n공백 문자입니다." : cout << "\n공백 문자가 아닙니다.";
iswspace(c) ? cout << "\n공백 문자입니다." : cout << "\n공백 문자가 아닙니다.";
return 0;
}
출력 결과
위 코드를 실행하면 다음과 같은 결과가 출력됩니다.
공백 문자가 아닙니다. 공백 문자입니다. 공백 문자가 아닙니다.
'.'과 '1'은 공백 문자가 아니므로 false(0)를 반환하고, 스페이스(' ')만 true(0이 아닌 값)를 반환하는 것을 확인할 수 있습니다.
예제 2 : 문자열에서 공백 문자 개수 세기
#include <iostream>
#include <cwctype>
using namespace std;
int main() {
int i, count;
wchar_t s[] = L"I am visiting tutorials point";
count = i = 0;
while (s[i]) {
if (iswspace(s[i]))
count++;
i++;
}
cout << "공백 문자는 총 " << count << "개입니다.\n";
return 0;
}
출력 결과
위 코드를 실행하면 다음과 같은 결과가 출력됩니다.
공백 문자는 총 4개입니다.
이 예제에서는 while 루프를 사용해 문자열의 각 문자를 하나씩 순회하면서 iswspace()로 공백 여부를 검사하고, 공백 문자가 발견될 때마다 카운터를 증가시킵니다. 문장 "I am visiting tutorials point"에는 단어 사이의 공백이 4개 있으므로 최종적으로 4가 출력됩니다.
마무리
iswspace() 함수는 와이드 문자열에서 공백 문자를 식별해야 할 때 매우 유용하게 사용됩니다. 특히 다국어 처리나 유니코드 기반 텍스트 파싱 작업에서는 일반 isspace() 대신 iswspace()를 사용하는 것이 더 안정적인 결과를 보장합니다. 삼항 연산자를 활용한 간단한 조건 출력부터 반복문을 이용한 문자열 분석까지, 다양한 상황에서 활용해 보시기 바랍니다.