Dela via


Om strängar

Strängfunktionerna ger program möjlighet att kopiera, jämföra, sortera, formatera och konvertera teckensträngar samt metoder för att fastställa teckentypen för varje tecken i en sträng. Alla strängfunktioner stöder teckenuppsättningarna single-byte, double-byte och Unicode om dessa teckenuppsättningar stöds av operativsystemet där programmet körs.

Säkerhetsvarning: Felaktig användning av strängfunktioner kan orsaka säkerhetsproblem för ditt program. Detta innebär vanligtvis en buffertöverskridning som kan tillåta en överbelastningsattack mot ditt program eller inmatning av körbar kod från en angripare. Strsafe-funktionerna möjliggör säkrare hantering av strängar och rekommenderas för bättre säkerhet för ditt program. Mer information om dessa funktioner finns i Using the Strsafe.h Functions.

I det här avsnittet beskrivs följande avsnitt.

Jämförelse med C Run-Time String Functions

Många strängfunktioner duplicerar eller förbättrar välbekanta strängfunktioner från CRT-standardbiblioteket (C Run-time). Många av förbättringarna gör att strängfunktionerna kan fungera med Unicode eller utökade teckenuppsättningar. I följande tabell visas CRT-funktionerna, Windows-funktionerna (som stöder Unicode, till skillnad från CRT-funktionerna) och StrSafe-funktionerna.

CRT-strängfunktion Windows-strängfunktion StrSafe-funktion
strcat lstrcat
StringCchCat
StringCchCatEx
StringCbCat
StringCbCatEx
strcmp lstrcmp (ingen motsvarande funktion)
strcpy lstrcpy
StringCchCopy
StringCchCopyEx
StringCbCopy
StringCbCopyEx
strlen lstrlen
StringCchLength
StringCbLength

 

Funktionen strlen returnerar till exempel alltid antalet byte i en sträng, men funktionen lstrlen returnerar antalet TCHAR- värden, som refererar till byte för ANSI-versioner av funktionen eller WCHAR- värden för Unicode-versioner.

Följande strängfunktioner skiljer sig från C-standardfunktioner, till exempel tolower och toupper i det att de fungerar på alla tecken i en teckenuppsättning. Med funktionen CharLower kan till exempel ett program konvertera ett versalt U med en trema (Ü) till gemener (ü). Mer information om teckenuppsättningar finns i enkortsteckenuppsättningar.

Funktion Beskrivning
CharLower Konverterar ett tecken eller en sträng till gemener.
CharLowerBuff Konverterar en teckensträng till gemener.
CharNext Flyttar till nästa tecken i en sträng.
CharPrev Flyttar till föregående tecken i en sträng.
CharUpper Konverterar ett tecken eller en sträng till versaler.
CharUpperBuff Konverterar en sträng till versaler.

 

Följande strängfunktioner beskriver ett tecken baserat på semantiken för det språk som användaren har valt. Dessa funktioner är Unicode-aktiverade.

Funktion Beskrivning
IsCharAlpha Avgör om ett tecken är alfabetiskt.
IsCharAlphaNumeric Avgör om ett tecken är alfanumeriskt.
IsCharLower Avgör om ett tecken är en liten bokstav.
IsCharUpper Avgör om ett tecken är versalt.

 

I följande tabell visas Unicode-tilläggen till CRT-standardfunktionerna (C run-time). Som tidigare nämnts möjliggör StrSafe-funktionerna säkrare hantering av strängar och rekommenderas för bättre säkerhet för ditt program.

Crt-standardfunktion Strängfunktion StrSafe-funktion
sprintf wsprintf
StringCchPrintf
StringCchPrintfEx
StringCbPrintf
StringCbPrintfEx
vsprintf wvsprintf
StringCchVPrintf
StringCchVPrintfEx
StringCbVPrintf
StringCbVPrintfEx

 

Strängresurser

Ett program som hanterar teckensträngar i resurser kan översättas till nya språk med minimalt arbete. I stället för att söka efter strängar i källmodulerna kan du helt enkelt översätta strängarna i resursfilen och länka om programmet. Dessutom förenklar användningen av strängresurser skapandet av Unicode- och icke-Unicode-versioner av programmet från samma källfiler.

Funktionen LoadString läser in en strängresurs från ett programs körbara fil. Funktionen FormatMessage läser in en strängresurs och tolkar formateringsalternativ som kan bäddas in i strängen.

Resurser i binär form lagras i Unicode-format. När du läser in resurser kan program använda Unicode-versionen av resursfunktionerna (LoadStringW, till exempel) för att hämta resurser som Unicode-data.

För 16-bitars strängresurser är 255 tecken den maximala längden. För 32-bitars strängresurser är 65535 tecken den maximala längden.