C++-Anwendungen für Unicode anpassen

Aus RAD Studio
Wechseln zu: Navigation, Suche

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.

Hinweis: Neue C++-Anwendungen setzen jetzt automatisch die Option _TCHAR-Zuordnung auf 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.

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 anstatt strcpy. 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:

Hinweis: Die UTF8-Codierung kann festgelegt werden, indem unter Verwendung der UTF8-Codeseite die Strings zwischen den API-RTL- und der Aufrufen an die RAD Studio-Frameworks und -Bibliotheken umgewandelt werden. Siehe UTF-8-Konvertierungsroutinen.

Siehe auch