WBCS(유니코드) 문자열

Programming/API 2015. 6. 1. 16:37

비쥬얼 스튜디오에서 [Win32 응요 프로그램]으로 프로젝트를 시작하게 되면

유니코드를 기본으로 프로젝트가 만들어진다.


멀티바이트, 유니코드의 설정에 따른 변화는 컴파일 옵션에서 UNICODE 디파인이 들어가느냐

안들어가느냐의 차이이며 이로 인해서 각종 헤더파일 내의 전처리기 코드를 통해서

유니코드에 적합한 코드로 변경이 된다.


Text 출력함수


이처럼 UNICODE의 디파인 여부에 따라서 유니코드 버전용 함수 또는 ANSI 코드용 함수가

호출 된다.

윈도우 API함수에 문자열이 들어가는 경우는 모두 위처럼 유니코드용 함수 W와 ANSI코드용

A가 존재한다.

그래서 대부분의 API함수는 함수 자체가 아닌 디파인된 매크로를 호출하는 형태가 된다.


Ex) 유니코드를 사용할 때 

1. wchar_t Ch = L'A';

2. wchar_t szStr[10] = L"ABCD";


wchar_t는 2Byte 타입이며 유니코드 문자를 지정하기 위해 문자, 문자열 앞에 L이라는 기호를 넣는다.


Ex) 편의를 위해서 typedef된 타입

typedef wchar_t WCHAR;

2.

3.WCHAR Ch = L'A';

4.WCHAR szStr[10] = L"ABCD";


또한 비주얼 C에서는 멀티바이트와 유니코드드 소스코드 호환을 위해서

다음과 같은 매크로를 지원한다.



Ex)


1. TCHAR Ch = TEXT('A);

2. TCHAR szStr[10] = TEXT("ABCD");


위 코드는 UNICODE의 디파인 여부에 따라서 char/wchar_t 변수로 지정이 된다.

TextOut(); API 함수를 호출함에 있어서도 UNICODE상태에 따라서 다음과 같이 다르게 처리가 된다.   TextOutW() / TextOutA()

각 W, A 함수는 문자열 인자를 받음으로써 char 타입을 받냐, wchar_t타입을 받냐의 차이이다.



또한 문자열길이를 받는 strlen함수도

유니코드용은 wcslen함수이고 

유니코드와 멀티바이트 통합을 위한 _tcslen이 존재한다.



유니코드 문자열 함수










'Programming > API' 카테고리의 다른 글

윈도우 API  (0) 2015.06.03
윈도우의 메모리 구조  (0) 2015.06.03
유니코드  (0) 2015.06.01
QueryPerformanceFrequency / QueryPerformanceCounter  (0) 2015.05.22
SetConsoleCursorPosition()  (0) 2015.04.28
admin