Tudnivalók a sztringekről
A sztringfüggvények lehetővé teszik az alkalmazások számára a karaktersztringek másolását, összehasonlítását, rendezését, formázását és konvertálását, valamint a sztringek karaktertípusának meghatározására használható eszközöket. Minden sztringfüggvény támogatja az egybájtos, a kétbájtos és a Unicode karakterkészletet, ha ezeket a karakterkészleteket az alkalmazás futtatását futtató operációs rendszer támogatja.
Biztonsági figyelmeztetés: A húrfüggvények helytelen használata biztonsági problémákat okozhat az alkalmazásban. Ez általában puffertúlcsordulást jelent, amely szolgáltatásmegtagadásos támadást tehet lehetővé az alkalmazás ellen, vagy végrehajtható kód injektálását egy támadótól. A Strsafe-függvények lehetővé teszik a sztringek biztonságosabb kezelését, és ajánlottak az alkalmazás biztonságának növelése érdekében. További információ ezekről a függvényekről: A Strsafe.h függvényeinek használata.
Ez a szakasz a következő témaköröket ismerteti.
Összehasonlítása a C Run-Time karakterláncfüggvényekkel
Számos sztringfüggvény duplikálja vagy javítja a megszokott sztringfüggvényeket a standard C futásidejű (CRT) kódtárból. Számos fejlesztés lehetővé teszi, hogy a sztringfüggvények Unicode- vagy kiterjesztett karakterkészletekkel működjenek. Az alábbi táblázat a CRT-függvényeket, a Windows-függvényeket (amelyek támogatják a Unicode-függvényeket, ellentétben a CRT-függvényekkel) és a StrSafe függvényeket.
CRT-sztringfüggvény | Windows karaktersorfüggvény | StrSafe függvény |
---|---|---|
strcat | lstrcat | |
strcmp | lstrcmp | (nincs egyenértékű függvény) |
strcpy | lstrcpy | |
strlen | lstrlen |
A strlen függvény például mindig egy sztring bájtjainak számát adja vissza, de az lstrlen függvény a TCHAR értékek számát adja vissza, ami a függvény ANSI-verzióinak bájtjaira, vagy a WCHAR Unicode-verziókra vonatkozó értékekre vonatkozik.
A következő sztringfüggvények eltérnek a standard C függvényektől, például és toupper, mivel egy karakterkészlet bármely karakterén működnek. A CharLower függvénnyel például egy alkalmazás kisbetűssé (Ü) konvertálhat nagybetűs U-t. További információ a karakterkészletekről: egy bájtos karakterkészletek.
Funkció | Leírás |
---|---|
CharLower | Egy karaktert vagy karakterláncot kisbetűssé alakít át. |
CharLowerBuff | Karakterláncot kisbetűssé alakít át. |
CharNext | Ugrás a sztring következő karakterére. |
CharPrev | A karakterlánc előző karakterére lép. |
CharUpper | Egy karaktert vagy karakterláncot alakít át nagybetűssé. |
CharUpperBuff | Karakterláncot nagybetűssé konvertál. |
Az alábbi sztringfüggvények a felhasználó által kiválasztott nyelv szemantikája alapján határoznak meg egy karaktert. Ezek a függvények Unicode-kompatibilisek.
Funkció | Leírás |
---|---|
IsCharAlpha | Meghatározza, hogy egy karakter betűrendes-e. |
IsCharAlphaNumeric | Meghatározza, hogy egy karakter alfanumerikus-e. |
IsCharLower | Meghatározza, hogy egy karakter kisbetűs-e. |
IsCharUpper | Meghatározza, hogy egy karakter nagybetűs-e. |
Az alábbi táblázat a standard C futásidejű (CRT) függvények Unicode-bővítményeit mutatja be. Ahogy korábban említettük, a StrSafe-függvények lehetővé teszik a sztringek biztonságosabb kezelését, és ajánlott az alkalmazás nagyobb biztonsága érdekében.
Standard CRT-függvény | Sztringfüggvény | StrSafe függvény |
---|---|---|
sprintf | wsprintf | |
vsprintf | wvsprintf |
Sztringerőforrások
Az az alkalmazás, amely karaktersorozatokat tart karban az erőforrásokban, minimális erőfeszítéssel fordítható le új nyelvekre. Ahelyett, hogy sztringeket keresne a forrásmodulokban, egyszerűen lefordíthatja az erőforrásfájlban lévő sztringeket, és újra összekapcsolhatja az alkalmazást. A sztringerőforrások használata emellett leegyszerűsíti az alkalmazás Unicode- és nem Unicode-verzióinak létrehozását ugyanazon forrásfájlokból.
A LoadString függvény betölt egy sztringerőforrást egy alkalmazás végrehajtható fájljából. A FormatMessage függvény betölt egy sztringerőforrást, és értelmezi a sztringbe ágyazható formázási beállításokat.
A bináris formátumú erőforrások Unicode formátumban vannak tárolva. Erőforrások betöltésekor az alkalmazások az erőforrásfüggvények Unicode-verzióját (példáulLoadStringW) használhatják az erőforrások Unicode-adatokként való lekéréséhez.
16 bites sztringerőforrások esetén a maximális hossz 255 karakter. A 32 bites sztringerőforrások esetében a maximális hossz 65535 karakter.