이 글에서는 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()를 사용하는 것이 좋습니다.