본문 바로가기

고급C,C++

확장 char형 : wchar_t

때로는 프로그램이 1바이트로 표현할 수 엇ㅂ는 문자세트를 처리해야 하는 경우도 있다. C++는 이것을 두 가지 방법으러 처리한다. 첫째, 확장 문자 세트가 시스템의 기본 문자 세트이면, 컴파일러 개발업체가 char형을 처음부터 2바이트 또는 그 이상으로 만드는것이다. 둘째, 기본 문자 세트에 확장 문자 세트를 동시에 지원하는 것이다. 즉, 보통의 8비트 char형으로 기본 문자세트를 나타내고, wchar_t형(wide charactor type에서 w,char,t를 각각 따 왔다.)으로 확장 문자 세트를 나타내는 것이다. wchar_t형은 시스템에 사용되는 가장 큰 확장 문자 세트를 나타낼 수 있을 만큼의 충분한 비트 폭을 가진 정수형이다. wchar_t 형은 기초 데이터형(underlying type)이라고 부르는 정수형과 동일한 크기의 부호 속성을 가진다. 기초 데이터형은 시스템에 따라 다른데, 어떤 시스템에는 unsigned short형일 수 있고, 다름 시스템에서는 int형이 될 수도 있다.
 cin과 cout은 입력과 출력을 char형 문자의 스트림을 간주하기 때문에 wchar_t형을 처리하지 못한다. 최신 버전의 iostream 헤더파일은 wchar_t형 문자의 스트림을 처리하기 위해 wcin과 wcout 객체를 제공한다. 그리고 확장 문자 상수나 확장 문자 문자열을 그 앞에 L을 뭍여서 나타낸다. 다음과 같은 코드는 변수 bob에 문자의 P의 wchar_t형 버전을 저장하고, 단어 tall의 wchar_t형 버전을 디스플레이한다.
 wchar_t bob = L'P'; //확장 문자 상수
 wcout<<L"tall"<<endl; //확장 문자 문자열의 출력

2바이트 wchar_t형을 사용하는 시스템에서, 이 코드는 각 문자에 2바이트씩 할당 하여 메모리에 저장한다.