Not
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Det här avsnittet beskriver skillnader mellan strängfunktioner som används vid hantering av Unicode- och teckenuppsättningsinformation. Dessa funktioner har både Unicode- och Windows-kodsida implementeringar för att stödja Unicode- och Windows-kodsidasparametrar.
Följande strängfunktioner kräver ingen särskild kommentar. Implementeringar av Unicode- och Windows-kodsidor fungerar på samma sätt.
- CharNext
- CharPrev
- StringCchCat, StringCchCatEx
- StringCchCopy, StringCchCopyEx
- StrCbLength, StrCchLength
Längdvärdet som hämtas av en av stränglängdsfunktionerna baseras alltid på normal teckenbredd: 8 bitar för Windows-kodsidor, 16 bitar för Unicode. Det här värdet kallas ofta för "antal tecken". Den här termen är strikt korrekt eftersom Windows-kodsidor som använder teckenuppsättningar med dubbla byte (DBCS) har vissa tecken med full bredd som faktiskt representeras av två på varandra följande byte. En liknande situation uppstår för surrogater i Unicode.
Följande strängfunktioner är känsliga för språkvarianten för den aktuella tråden, som härleds från det språk som användaren väljer i Kontrollpanelen. Funktionerna lstrcmp och lstrcmpi utför inte bytejämförelser som deras ANSI-namnekes, till exempel strcmp. I stället jämför de strängar enligt reglerna för nationella inställningar.
Följande funktioner konverterar mellan OEM-teckenuppsättningen och antingen den aktuella Windows-kodsidan eller Unicode, beroende på vilken version som används:
Utskriftsfunktionerna, till exempel StringCbPrintf, stöder Unicode genom att tillhandahålla följande nya och ändrade datatyper i deras formatspecifikationer. Dessa formatspecifikationer påverkar hur funktionerna tolkar motsvarande indataparameter.
| Formatspecifikation | Datatyp för Windows-kodsidans version | Datatyp för Unicode-version |
|---|---|---|
| c | RÖDING | WCHAR |
| C | WCHAR | RÖDING |
| hc, hC | RÖDING | RÖDING |
| hs, hS | LPSTR | LPSTR |
| lc, lC | WCHAR | WCHAR |
| ls, lS | LPWSTR | LPWSTR |
| s | LPSTR | LPWSTR |
| S | LPWSTR | LPSTR |
Datatypen för utdatatexten beror alltid på funktionens version. När datatypen för indataparametern och datatypen för utdatatexten inte godkänns utför utskriftsfunktionen en konvertering från Unicode till den aktuella Windows-kodsidan, eller vice versa, efter behov.
För Unicode-versionen av utskriftsfunktionerna är formatsträngen Unicode, liksom utdatatexten.
Försiktighet
Dålig bufferthantering är inblandad i många säkerhetsproblem som omfattar buffertöverskridanden. Se Strsafe.h-referens. Funktionerna som definieras i Strsafe.h ger ytterligare bearbetning för korrekt bufferthantering i koden. Därför är de avsedda att ersätta sina inbyggda C/C++-motsvarigheter samt specifika Microsoft Windows-implementeringar. Mer information finns i säkerhetsöverväganden: Internationella funktioner.
Relaterade ämnen