Megosztás a következőn keresztül:


Windows-adattípusok sztringekhez

A legtöbb sztringművelet ugyanazt a logikát használhatja Unicode és Windows-kódlapok. Az egyetlen különbség az, hogy az alapműveleti egység egy 16 bites karakter (más néven széles karakter) a Unicode-hoz és egy 8 bites karakter a Windows-kódlapokhoz. A Windows fejlécfájljai számos típusdefiníciót biztosítanak, amelyek megkönnyítik a Unicode-hoz vagy a Windows-kódlapokhoz fordítható források létrehozását.

A Windows három karakter- és sztringadattípust támogat: olyan általános típusdefiníciókat, amelyek Unicode- vagy Windows-kódlapokhoz is lefordíthatók, valamint két meghatározott típusdefiníciót. Az egyik típusdefiníciók a Unicode-hoz, a másik a Windows kódlapjaihoz használhatók.

Az általános adattípusokat használó alkalmazások egyszerűen lefordíthatók Unicode-ra a "UNICODE" definiálásával a fejlécfájlok #include utasításai előtt, vagy fordítás közben. Az új Windows-alkalmazásoknak Unicode-ot kell használniuk a különböző kódlapok inkonzisztenciája elkerülése és a honosítás egyszerűsítése érdekében. Ezeket általános adattípusokkal kell írni, és meg kell határoznia a "UNICODE"-t, hogy ezeket a típusokat Unicode-típusokká fordíthassa. Azon kevés helyen, ahol egy alkalmazásnak 8 bites karakteradatokkal kell dolgoznia, explicit módon használhatja a Windows-kódlapok típusait.

Az általános típusok windowsos kódlapokra való fordításának lehetősége elsősorban az örökölt alkalmazások támogatására szolgál. A Windows-kódlapok fordításához az alkalmazás csak kihagyja a UNICODE-definíciót.

Az alábbi példa a Windows fejlécfájljaiban használt módszert mutatja be a három adattípus meghatározásához. A megvalósításhoz tekintse meg a Winnt.h fejlécfájlt.

// 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;

A típusdefinícióban (például TCHAR vagy LPTSTR) található "T" betű egy általános típust jelöl, amely a Windows-kódlapokhoz vagy a Unicode-hoz fordítható. A "W" betű egy típusdefinícióban( például WCHAR vagy LPWSTR) Unicode-típust jelöl. Mivel a Windows-kódlapok régebbi formátumúak, egyszerű típusdefiníciókkal rendelkeznek, például CHAR- és LPSTR-definíciókkal. A Windows adattípusainak teljes leírását Windows-adattípusokcímű témakörben talál.

Unicode a Windows API