Windows の文字列のデータ型

ほとんどの文字列操作では、 UnicodeWindows コード ページで同じロジックを使用できます。 唯一の違いは、操作の基本的な単位は、Unicode の場合は 16 ビット文字 (ワイド文字とも呼ばれます)、Windows コード ページの場合は 8 ビット文字です。 Windows ヘッダー ファイルには、Unicode または Windows コード ページ用にコンパイルできるソースを簡単に作成できる型定義がいくつか用意されています。

Windows では、文字データ型と文字列データ型の 3 つのセットがサポートされています。Unicode または Windows コード ページ用にコンパイルできるジェネリック型定義のセットと、特定の型定義の 2 つのセットです。 特定の型定義のセットの 1 つは Unicode で使用し、もう 1 つは Windows コード ページで使用することです。

ジェネリック データ型を使用するアプリケーションは、ヘッダー ファイルの #include ステートメントの前、またはコンパイル時に "UNICODE" を定義するだけで、Unicode 用にコンパイルできます。 新しい Windows アプリケーションでは、さまざまなコード ページの不整合を回避し、ローカライズを簡略化するために Unicode を使用する必要があります。 ジェネリック データ型を使用して記述し、これらの型を Unicode 型にコンパイルするために "UNICODE" を定義する必要があります。 アプリケーションが 8 ビット文字データを操作する必要があるいくつかの場所では、Windows コード ページの型を明示的に使用できます。

汎用型を Windows コード ページの型にコンパイルする機能は、主にレガシ アプリケーションをサポートするために存在します。 Windows コード ページ用にコンパイルするために、アプリケーションは UNICODE 定義を省略するだけです。

次の例は、3 つのデータ型セットを定義するために 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 コード ページまたは Unicode 用にコンパイルできるジェネリック型を指定します。 型定義の文字 "W" (WCHAR や LPWSTR など) は、Unicode 型を指定します。 Windows コード ページは古い形式であるため、CHAR や LPSTR などの単純な型定義があります。 Windows のデータ型の詳細については、「Windows データ型」を参照してください。

Windows API の Unicode