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

C++ STL iswcntrl() 함수 완벽 정리 – 와이드 문자 제어 문자 검사하기

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이 아닌지만 확인하면 되므로 조건문과 함께 간결하게 사용할 수 있다는 점도 기억해 두면 좋습니다.