4 Stimmen

Umstellung von std::string auf std::wstring für eingebettete Anwendungen?

Bis jetzt habe ich std::string in meinen C++-Anwendungen für eingebettete Systeme (Router, Switches, Telekommunikationsgeräte usw.) verwendet.

Für das nächste Projekt erwäge ich, von std::string zu std::wstring zu wechseln, um Unicode zu unterstützen. Dies würde es den Endbenutzern zum Beispiel ermöglichen, chinesische Zeichen in der Befehlszeilenschnittstelle (CLI) zu verwenden.

Mit welchen Komplikationen / Kopfschmerzen / Überraschungen muss ich rechnen? Was ist zum Beispiel, wenn ich eine Bibliothek eines Drittanbieters verwende, die immer noch std::string verwendet?

Da die Unterstützung für internationale Zeichenketten für die Art von eingebetteten Systemen, an denen ich arbeite, nicht unbedingt erforderlich ist, würde ich dies nur tun, wenn es keine größeren Probleme verursacht.

1voto

Kristopher Johnson Punkte 78933

Beachten Sie, dass viele Kommunikationsprotokolle 8-Bit-Zeichen (oder 7-Bit-Zeichen oder andere Varianten) erfordern, so dass Sie oft zwischen Ihren internen wchar_t/wstring-Daten und externen Kodierungen übersetzen müssen.

Die UTF-8-Kodierung ist nützlich, wenn Sie eine 8-Bit-Darstellung von Unicode-Zeichen benötigen. (Siehe Wie schreibt man Code, der sicher für UTF-8 ist? für einige weitere Informationen). Beachten Sie aber, dass Sie möglicherweise andere Kodierungen unterstützen müssen.

Immer mehr Bibliotheken von Drittanbietern unterstützen Unicode, aber es gibt immer noch viele, die das nicht tun.

Ich kann Ihnen nicht wirklich sagen, ob es die Kopfschmerzen wert ist. Das hängt davon ab, welche Anforderungen Sie haben. Wenn Sie bei Null anfangen, ist es einfacher, mit std::wstring zu beginnen, als später von std::string zu std::wstring zu konvertieren.

1voto

Nemanja Trifunovic Punkte 23869

Std::wstring ist eine gute Wahl für das Halten von Unicode-Strings auf Windows, aber nicht auf den meisten anderen Plattformen, und ceirtanly nicht für einen portablen Code. Versuchen Sie besser, mit std::string und UTF-8 zu bleiben.

1voto

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X