Share via


Unterschiede bei der Zeichenfolgenfunktion

In diesem Thema werden die Unterschiede zwischen Zeichenfolgenfunktionen beschrieben, die bei der Verarbeitung von Unicode- und Zeichensatzinformationen verwendet werden. Diese Funktionen verfügen über Unicode - und Windows-Codepageimplementierungen , um Unicode- und Windows-Codepageparameter zu unterstützen.

Die folgenden Zeichenfolgenfunktionen erfordern keinen speziellen Kommentar. Ihre Unicode- und Windows-Codepageimplementierungen funktionieren identisch.

Der Längenwert, der von einer der Zeichenfolgenlängenfunktionen abgerufen wird, basiert immer auf der normalen Zeichenbreite: 8 Bits für Windows-Codepages, 16 Bit für Unicode. Dieser Wert wird häufig als "Anzahl von Zeichen" bezeichnet. Dieser Begriff ist genau richtig, da Windows-Codepages, die Double-Byte-Zeichensätze (DOUBLE-Byte-Zeichensätze , DBCSs) verwenden, einige Zeichen voller Breite aufweisen, die tatsächlich durch zwei aufeinanderfolgende Bytes dargestellt werden. Eine ähnliche Situation tritt bei Ersatzzeichen in Unicode auf.

Die folgenden Zeichenfolgenfunktionen berücksichtigen das Gebietsschema des aktuellen Threads, das von der Sprache abgeleitet wird, die der Benutzer im Systemsteuerung auswählt. Die Funktionen lstrcmp und lstrcmpi führen keine Bytevergleiche wie ihre ANSI-Namensgeber durch, z. B. strcmp. Stattdessen vergleichen sie Zeichenfolgen gemäß den Regeln des Gebietsschemas.

Die folgenden Funktionen konvertieren je nach verwendeter Version zwischen dem OEM-Zeichensatz und der aktuellen Windows-Codepage oder Unicode:

Die Druckfunktionen, z. B. StringCbPrintf, unterstützen Unicode, indem sie die folgenden neuen und geänderten Datentypen in ihren Formatspezifikationen bereitstellen. Diese Formatspezifikationen wirken sich auf die Art und Weise aus, wie die Funktionen den entsprechenden Eingabeparameter interpretieren.

Formatspezifikation Datentyp für Windows-Codepageversion Datentyp für Unicode-Version
c CHAR WCHAR
C WCHAR CHAR
hc, hC CHAR CHAR
hs, hS LPSTR LPSTR
lc, lC WCHAR WCHAR
ls, lS LPWSTR LPWSTR
s LPSTR LPWSTR
E LPWSTR LPSTR

 

Der Datentyp für den Ausgabetext hängt immer von der Version der Funktion ab. Wenn der Datentyp des Eingabeparameters und der Datentyp des Ausgabetexts nicht übereinstimmen, führt die Druckfunktion nach Bedarf eine Konvertierung von Unicode in die aktuelle Windows-Codepage oder umgekehrt durch.

Für die Unicode-Version der Druckfunktionen ist die Formatzeichenfolge Unicode, ebenso der Ausgabetext.

Achtung

Eine schlechte Pufferbehandlung ist in viele Sicherheitsprobleme verwickelt, die Pufferüberläufe beinhalten. Weitere Informationen finden Sie unter Strsafe.h-Referenz. Die in Strsafe.h definierten Funktionen bieten zusätzliche Verarbeitung für die ordnungsgemäße Pufferverarbeitung in Ihrem Code. Aus diesem Grund sollen sie ihre integrierten C/C++-Entsprechungen sowie bestimmte Microsoft Windows-Implementierungen ersetzen. Weitere Informationen finden Sie unter Sicherheitsüberlegungen: Internationale Features.

 

Unicode in der Windows-API