2013-04-26 10 views
5

Ich fand dieses Thema Convert between string, u16string & u32string und die Lösung (die wirklich gut aussieht) funktioniert nur mit libC++ nicht libstdC++. Gegenwärtig ist libC++ nicht verwendbar - es ist schwer zu kompilieren und funktioniert nicht gut unter Windows.Konvertiere zwischen String, u16string & u32string mit libstdC++

Gibt es eine Methode zum Konvertieren zwischen diesen Darstellungen mit C++ 11 und libstdC++, die auf allen Plattformen funktioniert?

Ich bin besonders daran interessiert, u32_string in string (utf8) und umgekehrt zu konvertieren.

+2

Konvertieren von einer 32-Bit-Unicode-Zeichenfolge zu utf8 ist sehr einfach, es ist etwa 10 Zeilen Code. Kannst du den Code nicht einfach schreiben? utf8 zu einer 32-Bit-Unicode-Zeichenfolge ist nicht sehr viel schwieriger. Diese Formate sind einfach und gut dokumentiert. – john

+1

Ich würde gerne eine bewährte Bibliothek verwenden und mich nicht damit herumärgern. Ich wusste nicht, dass es so einfach ist, aber ich bin mir sicher, dass jemand es vorher getan hat, also würde ich es gerne verwenden - ich glaube wirklich stark an Wiederverwendbarkeit von Code;) –

+3

Es gibt immer [boost.locale] (http: // www. boost.org/doc/libs/1_53_0/libs/locale/doc/html/index.html) – Cubbi

Antwort

2

Es gibt einen Weg portable Möglichkeit in C++ 11, dies durch die wstring_convert Klasse zu tun.

Allerdings scheint es, dass es noch nicht libstdC++ implementiert ist (Stand gcc 4.8)

Gleiches gilt für:

codecvt<char16_t, char, mbstate_t>. 
codecvt<char32_t, char, mbstate_t>. 
codecvt_utf8. 
codecvt_utf16. 
codecvt_utf8_utf16. 

In der Tat <codecvt> der Header ist immer noch nicht in der gcc Verteilung .

Verwandte Themen