C언어에서 유니코드를 다루기
C언어 표준에서 Wide Byte Charcter Set을 지원하기 위해
wchar_t 형이 unsigned short 로 매크로 정의 되어있다.
따라서 wchar_t형의 데이터의 크기는 2바이트 이다.
wchar_t * p = L"Hello";
문자열에 대해서는 위와 같이 L 매크로를 사용한다. 메모리에 저장될 때, 한 문자당 2바이트 씩 사용하여 저장되도록 지정하는 매크로이다.
wchar_t arr[32] = L"Hello";
와 같이 배열 선언을 할 수 도있다. arr[1] 과 같은 배열연산도 가능하다. wchar_t 형으로 지정되어 있으므로 2바이트 데이터의 연속이므로 2바이트씩 배열 연산을 수 행하여 정상적으로 arr[1]은 'e'값을 갖는다.
데이터를 유니코드로 다룰 수 있게 되었다.
유니코드와 C 런타임 라이브러리
다만 C런타임 라이브러리 함수들은 아스키코드로 인코딩된 입력값에 대해 실행되므로, 유니코드로 다뤄진 문자나 문자열을 제대로 다룰 수 없다.
이를 위해 Wide Byte Character Set을 위한 런타임 라이브러리 함수들이 만들어 져있다.
strlen() <-> wcslen()
printf() <-> wprintf()
'Programing > Windows Programming' 카테고리의 다른 글
윈도우즈와 유니코드 (0) | 2019.04.26 |
---|---|
문자세트 별 프로그래밍 (0) | 2019.04.26 |