C++ 공부

[C++] 와이드 문자 타입 wchar_t 핵심 정리

Client Side 2026. 5. 11. 20:57

[C++] 와이드 문자 타입 wchar_t 핵심 정리

C++ 프로그래밍 | 유니코드와 다국어 처리의 기초

1. wchar_t의 정의

wchar_t(Wide Character Type)는 1바이트 크기의 char만으로는 표현하기 힘든 다양한 국가의 문자를 처리하기 위해 설계된 확장 문자 타입입니다. 흔히 '와이드 문자'라고 부르며, 유니코드(Unicode) 환경에서 문자를 일관되게 다루기 위해 사용됩니다.

💡 주요 특징

  • 타입 표기: 와이드 문자열 리터럴을 사용할 때는 접두사 L을 붙입니다. (예: L"Hello")
  • 표준 컨테이너: std::string에 대응하는 와이드 문자용 클래스는 std::wstring입니다.
  • 입출력 객체: cout 대신 wcout을 사용하여 출력합니다.

2. 플랫폼에 따른 크기 변화

wchar_t의 크기는 C++ 표준에서 고정되어 있지 않으며, 컴파일러와 OS 환경에 따라 달라집니다.

OS 환경 크기 주요 인코딩
Windows (MSVC) 2 Bytes UTF-16
Linux / macOS 4 Bytes UTF-32

3. 인코딩: 왜 한글이 2바이트인가요?

흔히 "한글은 3바이트다"라고 알려진 것은 UTF-8 인코딩 기준입니다. 윈도우의 wchar_t 환경에서는 인코딩 방식이 다르기 때문에 크기도 달라집니다.

✔ UTF-8 (string): 영문 1바이트 / 한글 3바이트 (가변 길이)

✔ UTF-16 (wchar_t): 영문 2바이트 / 한글 2바이트 (대부분의 문자 2바이트 고정)

※ 참고: 2바이트를 초과하는 이모지 등은 wchar_t 두 개를 합쳐 4바이트로 표현하는 '서로게이트 페어(Surrogate Pair)' 방식을 사용합니다.

4. 결론: 언제 사용하는가?

  1. 다국어 지원: 전 세계 문자를 깨짐 없이 일관되게 처리해야 하는 소프트웨어 개발 시 필수적입니다.
  2. OS API 호출: Windows의 네이티브 API들은 유니코드(UTF-16)를 기본으로 하므로, 변환 비용을 줄이기 위해 사용합니다.
  3. 처리 편의성: 모든 문자를 일정한 단위(2바이트 등)로 다루면 문자열의 인덱스 계산과 가공이 용이해집니다.

📌 핵심 요약

wchar_t는 유니코드 처리를 위한 와이드 문자 타입입니다. Windows에서는 2바이트(UTF-16)를 사용하며 한글을 2바이트로 깔끔하게 처리할 수 있습니다. 다만 플랫폼마다 크기가 다를 수 있다는 점을 인지하고 설계해야 합니다.