C++-Anwendungen für Unicode anpassen
Nach oben zu Unicode für C++ - Index
Weil der Standard-String Unicode ist, sollte der C++-Code, der die RAD Studio-Frameworks und -Bibliotheken verwendet, Unicode-sensitiv sein. Mit der Option _TCHAR-Zuordnung des Dialogfelds Projekt > Optionen > C++ (Gemeinsame Optionen) können Sie sicherstellen, dass Ihr Code sowohl "Narrow"- als auch "Wide"-Strings korrekt verarbeitet.
wchar_t
und enthalten einen _tmain(...)
-Eintrittspunkt, der in main
übergeht. C++-Anwendungen, bei dennen die Option _TCHAR-Zuordnung automatisch gesetzt ist, verwenden die korrekten Floating-Funktionen.Inhaltsverzeichnis
Unicode-bezogene Fragen für C++
In C++ gibt es eine Reihe mit Unicode zusammenhängende Fragen, die für Delphi-Anwender nicht relevant sind. Diese Fragen ergeben sich aus der Tatsache, dass die C++-RTL und die Windows-API standardmäßig "narrow" sind, die RAD Studio-Frameworks und -Bibliotheken verwenden aber Unicode-Strings. Einige dieser Fragen werden im Folgenden behandelt.
Verwenden der RAD Studio-Frameworks und -Bibliotheken und der C++-RTL
Die RAD Studio-Frameworks und -Bibliotheken verwenden Unicode, die C++-RTL ist dagegen standardmäßig "narrow", enthält aber Routinen sowohl für "wide"- als auch für "narrow"-Strings (siehe Floating-Funktionen). In Anwendungen, die die RAD Studio-Frameworks und -Bibliotheken verwenden, müssen Sie daher die "wide"-Versionen der C++-RTL-Funktionen einsetzen. Um die C++-RTL in einer Anwendung, für die "wide"-Strings erforderlich sind, zu verwenden, müssen Sie Folgendes ausführen:
- Setzen Sie _TCHAR-Zuordnung auf
wchar_t
, und verwenden Sie _TCHAR in Ihrem Quellcode. - Verwenden Sie die "Floating"-Version der C++-RTL-Member, wie z.B.
_tcscpy
anstattstrcpy
. Siehe die Liste der Floating-Funktionen.
Verwenden der Windows-API
Die Windows-API ist normalerweise per Vorgabe "narrow". Die _TCHAR-Zuordnungsoption ist hier außerordentlich hilfreich, aber die Option ist für C++-Anwendungen, die die RAD Studio-Frameworks und -Bibliotheken nicht verwenden, per Vorgabe auf char
gesetzt.
Zur Verwendung der Windows-API in einer C++-Anwendung, die die RAD Studio-Frameworks und -Bibliotheken nicht verwendet, müssen Sie die Option _TCHAR entspricht im Dialogfeld Projekt > Optionen > C++ (Gemeinsame Optionen) explizit auf wchar_t
setzen.
Übergeben von String-Konstanten
String-Konstanten, wie z.B. "string constant", sind weiterhin "narrow" (char*
), daher können sie nicht wie früher an Funktionen von RAD Studio-Frameworks und -Bibliotheken übergeben werden, die PChar übernehmen. Sie können die Konstante an Funktionen von RAD Studio-Frameworks und -Bibliotheken mit einem PChar-Parameter übergeben, wenn Sie der Konstante ein L voranstellen, wie in:
L"string constant"
Diese Umwandlung wird automatisch ausgeführt, wenn Sie die _TCHAR-Zuordnung auf wchar_t
setzen und die Makros _TEXT oder _T wie unter _TCHAR-Zuordnung beschrieben, verwenden.
Festlegen der Codeseite
Mit AnsiString können Sie die Codeseite für AnsiStringT<codepage>-Typen festlegen.
Es sind dieselben vordefinierten Typen vorhanden, die auch Delphi zur Verfügung stellt:
- AnsiString ist
AnsiStringT<0>
. - UTF8String ist
AnsiStringT<65005>
, die UTF8-Codeseite. - RawByteString ist
AnsiStringT<0xFFFF>
.