Anzeigen: Delphi C++
Anzeigeeinstellungen

Behandlung der AnsiString-Codeseitenspezifikation in C++

Aus RAD Studio XE2
Wechseln zu: Navigation, Suche

Nach oben zu Behandlung von Delphi-Features in C++Builder - Index

Die C++-Implementierung des Typs AnsiString stellt eine CodePage-Unterstützung bereit, die der von Delphi 2009 sehr ähnlich ist. Die Delphi-Version ist über eine Spracherweiterung implementiert, die C++-Version dagegen über eine Template mit einem Nicht-Typparameter als codepage, wie in:

template AnsiStringT<unsigned short codePage>

Deshalb ist der frühere Typ AnsiString jetzt einfach eine Typdefinition (typedef) der neuen AnsiStringT-Template, wie in:

 typedef AnsiStringT<65001> UTF8String;

 typedef AnsiStringT<65535> RawByteString;

Sie können andere Spezifikationen von AnsiStringT mit der gewünschten Codeseite deklarieren.

Alle Zuweisungen zu einer AnsiStringT-Instanz codieren die Daten in der Codeseite des jeweiligen Typs. Hier ein Beispiel: Im folgenden Quelltext werden die Unicode-Daten, die der Variablen UTF8String zugewiesen werden, automatisch in UTF8 codiert:

const wchar_t* data = L"СЛАДКОЕ";
UTF8String utfs(data);

Die Variable utfs kann an eine Funktion übergeben werden, die einen UnicodeString erwartet, und die Originaldaten werden ohne Datenverlust wiederhergestellt:

Button1->Caption = utfs; // Beschriftung der Schaltfläche auf "СЛАДКОЕ" setzen;

Beachten Sie bitte, dass AnsiStringT die codepage-Unterstützung zwar im Hintergrund verarbeitet, Sie aber dennoch durch Aufruf der folgenden Methode die Codeseite einer Instanz explizit setzen können:

AnsiStringT<CP>::SetCodePage(unsigned short codePage, bool convert=true)

Diese Methode sollte aber mit Bedacht verwendet werden, weil Benutzer der Instanz irregeführt werden könnten, da sie erwarten, dass der Typ in ihrer Standardcodeseite codierte Daten enthält.

Siehe auch

Frühere Versionen
In anderen Sprachen