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.
- CharNext
- CharPrev
- StringCchCat, StringCchCatEx
- StringCchCopy, StringCchCopyEx
- StrCbLength, StrCchLength
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.
Kapcsolódó témakörök