[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. 결론: 언제 사용하는가?
- 다국어 지원: 전 세계 문자를 깨짐 없이 일관되게 처리해야 하는 소프트웨어 개발 시 필수적입니다.
- OS API 호출: Windows의 네이티브 API들은 유니코드(UTF-16)를 기본으로 하므로, 변환 비용을 줄이기 위해 사용합니다.
- 처리 편의성: 모든 문자를 일정한 단위(2바이트 등)로 다루면 문자열의 인덱스 계산과 가공이 용이해집니다.
📌 핵심 요약
wchar_t는 유니코드 처리를 위한 와이드 문자 타입입니다. Windows에서는 2바이트(UTF-16)를 사용하며 한글을 2바이트로 깔끔하게 처리할 수 있습니다. 다만 플랫폼마다 크기가 다를 수 있다는 점을 인지하고 설계해야 합니다.
'C++ 공부' 카테고리의 다른 글
| [C++/자료구조] 핵심 정렬 알고리즘 및 트리 구조 정리 (모바일 최적화 관점) (0) | 2026.05.27 |
|---|---|
| [C++ Study] 가상상속과 연산자 오버로딩 (0) | 2026.04.28 |
| [C++ Study] 가상 함수부터 인터페이스까지: 객체지향의 핵심 정리 (0) | 2026.04.24 |
| [C++ Study] 가상 함수와 V-Table: 동적 바인딩의 내부 메커니즘 (0) | 2026.04.19 |
| [C++ Study] 객체지향 설계의 핵심: 관계 정의와 다형성 (Is-A, Has-A, Casting) (0) | 2026.04.18 |