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

+ Recent posts