이 글에서는 C++ STL의 putwchar() 함수가 어떻게 동작하는지, 그리고 그 문법과 실제 활용 예제까지 자세히 살펴보겠습니다.
putwchar() 함수란?
putwchar()는 C++ STL에 내장된 함수로, <cwchar> 헤더 파일에 정의되어 있습니다. 이 함수는 표준 출력 장치(stdout)에 와이드 문자(wide character) 하나를 출력하는 역할을 합니다. 인수로 전달된 와이드 문자를 받아 시스템의 표준 출력 스트림에 기록합니다.
쉽게 말해, putwchar()는 <cstdio> 헤더 파일에 정의된 잘 알려진 putchar() 함수의 와이드 문자 전용 버전이라고 할 수 있습니다. 일반 ASCII 문자가 아닌 유니코드 기반의 다국어 문자를 다룰 때 유용하게 사용됩니다.
문법
putwchar( wchar_t widec );
매개변수
이 함수는 다음 매개변수를 받습니다.
- widec − 표준 출력 장치에 출력하고자 하는 와이드 문자(wchar_t 타입)
반환 값
putwchar() 함수는 두 가지 값을 반환할 수 있습니다.
- 와이드 문자가 표준 출력에 성공적으로 기록되면, 출력된 문자 자체를 반환합니다.
- 출력에 실패하면 WEOF를 반환하며, 내부적으로 오류 지시자(error indicator)가 설정됩니다.
간단한 예제
입력
wchar_t ch = 'a';
putwchar(ch);
출력
a
실전 예제 1: 히브리 알파벳 출력하기
와이드 문자의 진가는 유니코드 문자를 다룰 때 드러납니다. 아래 예제는 setlocale()로 로케일을 설정한 뒤, 히브리 알파벳 전체를 순서대로 출력합니다.
#include <bits/stdc++.h>
using namespace std;
int main(){
setlocale(LC_ALL, "en_US.UTF-8");
wchar_t hold = L'\u05d0', next = L'\u05ea';
wcout << L"Hebrew Alphabets are: ";
for (wchar_t i = hold; i <= next; i++){
putwchar(i);
putwchar(' ');
}
return 0;
}
출력 결과
Hebrew Alphabets are: א ב ג ד ה ו ז ח ט י ך כ ל ם מ ן נ ס ע ף פ ץ צ ק ר ש ת
위 코드에서 \u05d0(א)부터 \u05ea(ת)까지의 유니코드 범위를 반복문으로 순회하며 각 문자를 putwchar()로 출력했습니다. 일반 putchar()로는 처리하기 어려운 다국어 문자도 손쉽게 출력할 수 있는 것이 특징입니다.
실전 예제 2: 영어 알파벳 출력하기
#include <bits/stdc++.h>
using namespace std;
int main(){
wchar_t hold = 'a', next = 'b';
wcout << "English Alphabets are: ";
for (wchar_t i = hold; i <= next; ++i){
putwchar(i);
putwchar(' ');
}
return 0;
}
출력 결과
English Alphabets are: a b
정리
putwchar()는 와이드 문자를 표준 출력에 한 글자씩 기록하는 간단하면서도 강력한 함수입니다. 성공 시 출력한 문자를 반환하고, 실패 시 WEOF를 반환한다는 점을 기억해 두면 반환 값을 검사해 오류 처리를 구현할 수 있습니다. 유니코드 기반의 다국어 텍스트를 콘솔에 출력해야 할 때 putwchar()를 적극 활용해 보시기 바랍니다.