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

C/C++의 putwchar() 함수: 와이드 문자 출력 방법과 예제

이 글에서는 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()를 적극 활용해 보시기 바랍니다.