次の方法で共有


文字列の 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 を する