Umwandlung von "normalen" std::string nach utf-8

Mal sehen, ob ich das erklären kann, ohne zu viele sachliche Fehler...

Schreibe ich eine string-Klasse und ich möchte es verwenden utf-8 (gespeichert in einem std::string), wie es in den internen Speicher.
Ich will, dass es in der Lage sein, sowohl "normale" std::string und std::wstring als ein-und Ausgang.

Arbeiten mit std::wstring ist kein problem, kann ich std::codecvt_utf8<wchar_t> sowohl konvertieren von und nach std::wstring.

Jedoch nach umfangreichen googeln und die Suche SO habe ich noch einen Weg finden, um die Konvertierung zwischen einer "normalen/Standard" C++ std::string (ich nehme an, in Windows unter dem lokalen system-Lokalisierung?) und ein utf-8 std::string.

Ich denke, eine Möglichkeit wäre, zuerst konvertieren Sie die std::string in einen std::wstring mit std::codecvt<wchar_t, char> und konvertieren Sie Sie dann in utf-8 wie oben, aber dieser scheint ziemlich ineffizient gegeben, dass zumindest die ersten 128 Werte eines char-übersetzen sollten, sofort in utf-8 ohne Konvertierung unabhängig von der Lokalisation, wenn ich das richtig verstehe.

Fand ich diese ähnliche Frage: C++: wie konvertieren von ASCII-oder ANSI in UTF8 und speichert Sie in std::string
Ich bin zwar ein bisschen skeptisch gegenüber, die Antwort, denn es ist schwer eine Kodierung latin-1 und ich möchte diese Arbeit mit allen Arten von Lokalisierung auf der sicheren Seite.

Keine Antworten, die boost-danke, ich will nicht, dass die Kopfschmerzen immer meine Codebasis zu arbeiten.

Zuerst müssen Sie irgendwie die Fragezeichen raus "(was ich davon ausgehen, in Windows unter dem lokalen system-Lokalisierung?)". std::string nicht über einen normalen/Standard-Kodierung. Sie können davon ausgehen, dass die std::string Sie haben kodiert wird, je nach Gebietsschema, aber wenn zum Beispiel, Sie haben es gerade gelesen von einer Datei, dann könnte das falsch, da es codiert wird jedoch die Datei kodiert ist.
Sowie in der Regel beim Lesen von raw-text-Dateien gibt es einfach keine Möglichkeit zu wissen, welche Kodierung es hat. Fehlen diese Informationen, scheint es eher für die Datei, die erstellt wurden auf einem system mit der gleichen Codierung, und deshalb habe ich angenommen, dass die Eingabe des Lesens der Datei in der lokalen Codierung.
OK, so kann man in der Tat entfernen Sie das Fragezeichen 🙂 Es ist kein Zweifel, dass Sie sind, vorausgesetzt, die Gebietsschema-spezifische Codierung.

InformationsquelleAutor DaedalusAlpha | 2014-02-05

Schreibe einen Kommentar