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.
Kapcsolódó témakörök