文字列の Windows データ型
ほとんどの文字列操作では、Unicode と Windows コード ページ 同じロジックを使用できます。 唯一の違いは、基本的な操作単位は、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 を する