C++ 표준 템플릿 라이브러리(STL)의 iswcntrl() 함수는 주어진 와이드 문자(wide character)가 제어 문자(control character)인지 아닌지를 판별하는 데 사용됩니다. 제어 문자란 C/C++에서 화면에 출력 위치를 차지하지 않는 문자를 의미합니다. 예를 들어 줄 바꿈(\n), 탭(\t) 같은 문자가 대표적인 제어 문자입니다.
iswcntrl() 함수는 <cwctype> 헤더 파일(C 스타일에서는 <wctype.h>)에 정의되어 있습니다.
iswcntrl() 함수 문법
int iswcntrl (wint_t c)
매개변수 − c − 검사할 문자를 나타냅니다.
반환값 − c가 제어 문자이면 0이 아닌 값(non-zero)을 반환하고, 그렇지 않으면 0을 반환합니다.
예제 프로그램의 접근 방식
- 사용자로부터 문자열 또는 문자를 입력받습니다.
- 제어 문자를 만나기 전까지 루프를 순회합니다.
- 첫 번째 제어 문자가 나타나기 전까지의 문자열을 출력합니다.
- 첫 번째 제어 문자를 발견하면 루프를 종료합니다.
예제 1
#include <stdio.h>
#include <wctype.h>
int main (){
int i=0;
wchar_t str[] = L"first line \n second line \n";
while (!iswcntrl(str[i])) {
putchar (str[i]);
i++;
}
return 0;
}출력 결과
위 코드를 실행하면 다음과 같은 결과가 출력됩니다 −
first line
문자열 중간에 있는 줄 바꿈 문자(\n)가 제어 문자로 감지되면서, 첫 번째 줄까지만 출력되고 루프가 종료됩니다.
예제 2
#include <stdio.h>
#include <wctype.h>
int main (){
int i=0;
wchar_t str[] = L"first linesecond line \nthird line";
while (!iswcntrl(str[i])) {
putchar (str[i]);
i++;
}
return 0;
}출력 결과
위 코드를 실행하면 다음과 같은 결과가 출력됩니다 −
first linesecond line
이번 예제에서는 두 개의 문자열이 공백 없이 붙어 있고, 첫 번째 제어 문자는 세 번째 줄 앞의 \n입니다. 따라서 앞의 두 문자열이 모두 출력된 후 루프가 종료됩니다.
정리
iswcntrl() 함수는 와이드 문자가 제어 문자인지 빠르게 확인할 수 있는 유용한 도구입니다. 특히 문자열을 파싱하거나, 줄 바꿈·탭 같은 비출력 문자를 기준으로 문자열을 분리해야 할 때 활용도가 높습니다. 반환값이 0이 아닌지만 확인하면 되므로 조건문과 함께 간결하게 사용할 수 있다는 점도 기억해 두면 좋습니다.