Udostępnij za pośrednictwem


Typy danych systemu Windows dla ciągów

Większość operacji na ciągach może używać tej samej logiki dla Unicode i stron kodu systemu Windows. Jedyną różnicą jest to, że podstawowa jednostka operacji jest znakiem 16-bitowym (znanym również jako znak szeroki) dla formatu Unicode i 8-bitowym znakiem stron kodu systemu Windows. Pliki nagłówkowe systemu Windows zawierają kilka definicji typów, które ułatwiają tworzenie źródeł, które można skompilować dla formatu Unicode lub stron kodu systemu Windows.

System Windows obsługuje trzy zestawy typów danych znaków i ciągów: zestaw ogólnych definicji typów, które mogą być kompilowane dla stron kodu Unicode lub Windows oraz dwa zestawy określonych definicji typów. Jeden zestaw określonych definicji typów jest używany z unicode, a drugi jest używany ze stronami kodu systemu Windows.

Aplikację używającą ogólnych typów danych można skompilować dla unicode, definiując "UNICODE" przed instrukcjami #include dla plików nagłówka lub podczas kompilacji. Nowe aplikacje systemu Windows powinny używać formatu Unicode, aby uniknąć niespójności różnych stron kodu i uprościć lokalizację. Powinny one być zapisywane przy użyciu ogólnych typów danych i powinny definiować "UNICODE" w celu skompilowania tych typów do typów Unicode. W kilku miejscach, w których aplikacja musi pracować z danymi 8-bitowymi znakami, może jawnie korzystać z typów stron kodu systemu Windows.

Możliwość kompilowania typów ogólnych w typy stron kodu systemu Windows istnieje głównie w celu obsługi starszych aplikacji. Aby skompilować strony kodu systemu Windows, aplikacja po prostu pomija definicję UNICODE.

Poniższy przykład przedstawia metodę używaną w plikach nagłówkowych systemu Windows do definiowania trzech zestawów typów danych. Aby zapoznać się z implementacją, zobacz plik nagłówka 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;

Litera "T" w definicji typu, na przykład TCHAR lub LPTSTR, wyznacza typ ogólny, który można skompilować dla stron kodu systemu Windows lub Unicode. Litera "W" w definicji typu, na przykład WCHAR lub LPWSTR, wyznacza typ Unicode. Ponieważ strony kodu systemu Windows są starsze, mają proste definicje typów, takie jak CHAR i LPSTR. Aby uzyskać pełny opis typów danych w systemie Windows, zobacz Typy danych systemu Windows.

Unicode w interfejsie API systemu Windows