適用於字串的 Windows 資料類型

大部分的字串作業都可以針對 UnicodeWindows 字碼頁使用相同的邏輯。 唯一的差別在於基本作業單位是 16 位字元 (也稱為 Unicode 的寬字元) ,以及 Windows 字碼頁的 8 位字元。 Windows 標頭檔提供數種類型定義,可讓您輕鬆地建立可針對 Unicode 或 Windows 字碼頁編譯的來源。

Windows 支援三組字元和字串資料類型:一組可針對 Unicode 或 Windows 字碼頁編譯的泛型型別定義,以及兩組特定的類型定義。 一組特定的類型定義是用於 Unicode,另一組則是用於 Windows 字碼頁。

使用泛型資料類型的應用程式只要在標頭檔 #include 語句之前或編譯期間定義 「UNICODE」,即可針對 Unicode 編譯。 新的 Windows 應用程式應該使用 Unicode 來避免不同字碼頁的不一致,並簡化當地語系化。 它們應該以泛型資料類型撰寫,而且應該定義 「UNICODE」,以便將這些類型編譯成 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 字碼頁或 Unicode 編譯的泛型型別。 類型定義中的字母 「W」,例如 WCHAR 或 LPWSTR,會指定 Unicode 類型。 由於 Windows 字碼頁屬於較舊的表單,因此具有簡單的類型定義,例如 CHAR 和 LPSTR。 如需 Windows 中資料類型的完整描述,請參閱 Windows 資料類型

Windows API 中的 Unicode