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


Sztringfüggvények eltérései

Ez a témakör a Unicode és a karakterkészlet adatainak kezeléséhez használt sztringfüggvények közötti különbségeket ismerteti. Ezek a függvények Unicode és Windows-kódlap implementációkkal rendelkeznek a Unicode és a Windows kódlapparaméterek támogatásához.

Az alábbi sztringfüggvények nem igényelnek speciális megjegyzést. Unicode- és Windows-kódlap-implementációik azonos módon működnek.

A karakterlánc-hosszfüggvények egyikével lekért hosszérték mindig a normál karakterszélességen alapul: Windows-kódlapok esetén 8 bit, Unicode esetén 16 bit. Ezt az értéket gyakran "karakterek számának" is nevezik. Ez a kifejezés szigorúan helyes, mert a kétbájtos karakterkészleteket használó Windows-kódlapok (DBCS-ek) teljes szélességű karaktereket tartalmaznak, amelyeket valójában két egymást követő bájt jelöl. Hasonló helyzet áll elő Unicode-ban helyettesítők esetében.

A következő sztringfüggvények érzékenyek az aktuális szál területi beállításaira, a felhasználó által a Vezérlőpulton kiválasztott nyelvből származtatva. Az lstrcmp és lstrcmpi függvények nem végeznek bájt-összehasonlításokat, például strcmp. Ehelyett a területi beállítás szabályai szerint hasonlítják össze a sztringeket.

A következő függvények konvertálnak az OEM-karakterkészlet és az aktuális Windows-kódlap vagy a Unicode között attól függően, hogy melyik verziót használják:

A nyomtatási függvények, például StringCbPrintf, támogatják a Unicode-t az alábbi új és módosított adattípusok formázási specifikációiban való megadásával. Ezek a formátumspecifikációk befolyásolják, hogy a függvények hogyan értelmezik a megfelelő bemeneti paramétert.

Formátum specifikációja Adattípus a Windows kódlapjának verziójához Unicode-verzió adattípusa
c BEJÁRÓNŐ WCHAR
C WCHAR BEJÁRÓNŐ
hc, hC BEJÁRÓNŐ BEJÁRÓNŐ
hs, hS LPSTR LPSTR
lc, lC WCHAR WCHAR
ls, lS LPWSTR LPWSTR
s LPSTR LPWSTR
S LPWSTR LPSTR

 

A kimeneti szöveg adattípusa mindig a függvény verziójától függ. Ha a bemeneti paraméter adattípusa és a kimeneti szöveg adattípusa nem egyezik meg, a nyomtatási függvény Unicode-ról az aktuális Windows-kódlapra történő konvertálást hajt végre, vagy fordítva, szükség szerint.

A nyomtatási függvények Unicode-verziójában a formátumsztring Unicode, a kimeneti szöveghez hasonlóan.

Figyelmeztet

A pufferek rossz kezelése számos biztonsági probléma miatt merül fel, amelyek puffertúlcsordulásokat is érintenek. Lásd Strsafe.h referencia. A Strsafe.h-ban definiált függvények további feldolgozást biztosítanak a kód megfelelő pufferkezeléséhez. Ezért a beépített C/C++ megfelelőik, valamint a Microsoft Windows egyes implementációinak lecserélésére szolgálnak. További információ: biztonsági szempontok: Nemzetközi funkciók.

 

Unicode a Windows API