문자열에 대한 Windows 데이터 형식

대부분의 문자열 작업은 유니코드Windows 코드 페이지에 동일한 논리를 사용할 수 있습니다. 유일한 차이점은 작업의 기본 단위는 유니코드의 경우 16비트 문자(와이드 문자라고도 함)와 Windows 코드 페이지의 경우 8비트 문자라는 것입니다. Windows 헤더 파일은 유니코드 또는 Windows 코드 페이지에 대해 컴파일할 수 있는 원본을 쉽게 만들 수 있는 여러 형식 정의를 제공합니다.

Windows는 세 가지 문자 및 문자열 데이터 형식 집합, 즉 유니코드 또는 Windows 코드 페이지에 대해 컴파일할 수 있는 제네릭 형식 정의 집합과 두 개의 특정 형식 정의 집합을 지원합니다. 특정 형식 정의 집합은 유니코드와 함께 사용되며 다른 하나는 Windows 코드 페이지에서 사용하기 위한 것입니다.

제네릭 데이터 형식을 사용하는 애플리케이션은 단순히 헤더 파일에 대한 #include 문 앞이나 컴파일 중에 "UNICODE"를 정의하여 유니코드용으로 컴파일할 수 있습니다. 새 Windows 애플리케이션은 유니코드를 사용하여 다양한 코드 페이지의 불일치를 방지하고 지역화를 간소화해야 합니다. 이러한 형식은 제네릭 데이터 형식으로 작성되어야 하며 이러한 형식을 유니코드 형식으로 컴파일하려면 "UNICODE"를 정의해야 합니다. 애플리케이션이 8비트 문자 데이터로 작업해야 하는 몇 가지 위치에서는 Windows 코드 페이지에 대한 형식을 명시적으로 사용할 수 있습니다.

Windows 코드 페이지의 형식으로 제네릭 형식을 컴파일하는 기능은 주로 레거시 애플리케이션을 지원하기 위해 존재합니다. Windows 코드 페이지를 컴파일하기 위해 애플리케이션은 UNICODE 정의를 생략합니다.

다음 예제에서는 Windows 헤더 파일에서 세 가지 데이터 형식 집합을 정의하는 데 사용되는 메서드를 보여줍니다. 구현은 Winnt.h 헤더 파일을 참조하세요.

// Generic types

#ifdef UNICODE
    typedef wchar_t TCHAR;
#else
    typedef unsigned char TCHAR;
#endif

typedef TCHAR *LPTSTR, *LPTCH;

// 8-bit character specific

typedef unsigned char CHAR;
typedef CHAR *LPSTR, *LPCH;

// Unicode specific (wide characters)

typedef unsigned wchar_t WCHAR;
typedef WCHAR *LPWSTR, *LPWCH;

형식 정의의 문자 "T"(예: TCHAR 또는 LPTSTR)는 Windows 코드 페이지 또는 유니코드에 대해 컴파일할 수 있는 제네릭 형식을 지정합니다. 형식 정의의 문자 "W"(예: WCHAR 또는 LPWSTR)는 유니코드 형식을 지정합니다. Windows 코드 페이지는 이전 형식이므로 CHAR 및 LPSTR과 같은 간단한 형식 정의가 있습니다. Windows의 데이터 형식에 대한 전체 설명은 Windows 데이터 형식을 참조하세요.

Windows API의 유니코드