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

C++ STL의 iswupper() 함수: 와이드 문자 대문자 검사 방법과 예제

이 글에서는 C++의 iswupper() 함수가 무엇인지, 어떤 구문으로 사용되고 어떻게 동작하며 어떤 값을 반환하는지 자세히 알아보겠습니다.

iswupper() 함수는 C++의 <cwctype> 헤더 파일에 정의된 내장 함수로, 전달된 와이드 문자(wide character)가 대문자(A~Z)인지 여부를 검사합니다. 이 함수는 isupper()의 와이드 문자 버전으로, 동작 방식은 isupper()와 동일하지만 와이드 문자를 지원한다는 점이 다릅니다. 인수로 전달된 문자가 대문자(A~Z)이면 0이 아닌 정수 값(참)을 반환하고, 그렇지 않으면 0(거짓)을 반환합니다.

구문

int iswupper(wint_t ch);

이 함수는 검사할 와이드 문자 하나만 매개변수로 받습니다. 인수는 wint_t 타입 또는 WEOF로 캐스팅되어 전달됩니다.

wint_t는 정수형 데이터를 저장할 수 있는 타입입니다.

반환값

함수는 정수 값을 반환합니다. 조건이 참이면 0이 아닌 값을, 거짓이면 0을 반환합니다.

예제 1: 단일 문자 검사

#include <iostream>
#include <cwctype>
using namespace std;

int main() {
    wint_t a = 'A';
    wint_t b = 'a';
    wint_t c = 'B';

    iswupper(a) ? cout << "\n대문자입니다" : cout << "\n대문자가 아닙니다";
    iswupper(b) ? cout << "\n대문자입니다" : cout << "\n대문자가 아닙니다";
    iswupper(c) ? cout << "\n대문자입니다" : cout << "\n대문자가 아닙니다";

    return 0;
}

출력 결과

위 코드를 실행하면 다음과 같은 결과가 출력됩니다.

대문자입니다
대문자가 아닙니다
대문자입니다

예제 2: 문자열에서 대문자 개수 세기

다음 예제는 iswupper()를 활용해 문자열에 포함된 대문자의 개수를 세는 프로그램입니다. 반복문으로 문자열을 한 글자씩 순회하면서 대문자를 만날 때마다 카운트를 증가시키는 방식입니다.

#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 (iswupper(s[i]))
            count++;
        i++;
    }

    cout << "대문자 개수는 " << count << "개입니다.\n";

    return 0;
}

출력 결과

위 코드를 실행하면 다음과 같은 결과가 출력됩니다.

대문자 개수는 11개입니다.

정리

iswupper()는 와이드 문자가 대문자인지 빠르게 판별할 수 있는 유용한 함수입니다. 위 예제처럼 반복문과 함께 사용하면 문자열 전체에서 대문자의 개수도 손쉽게 계산할 수 있습니다. 일반 문자(char)를 다룰 때는 isupper()를, 와이드 문자(wchar_t/wint_t)를 다룰 때는 iswupper()를 사용하는 것이 좋습니다.