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 データ型」を参照してください。
関連トピック