utf8 char* nach wstring convertieren
-
ja wie mache ich das?
-
http://www.boost.org/doc/libs/1_36_0/libs/serialization/doc/codecvt.html z.B.
Aber das kommt darauf an, wie die Daten in dem wstring kodiert sind. Such mal im Forum, dazu gab's schon mehrere Threads.
-
Hast du dir das RFC nicht durchgelesen? Dort steht grundsätzlich alles drin.
std::wstringist grundsätzlich UCS-2 oder UCS-4 codiert. Also 2 oder 4 Bytes pro Charackter. Wo ist somit das Problem? Schon mal selber versucht? Ein wenig Eigeninitiative wäre schon gut
Grüssli
-
das ist mir einfach zu lang. Ich les hier doch nicht für so eine simple sache hunderte von Seiten durch. Ich will das auch garnicht selbst implementieren, ich will einfach nur eine Funktion, die das für micht macht, es kann doch nicht sein, das ich der erste bin, der sowas versucht.
Meine intention ist es etwas produktiver zu arbeiten, nicht alles selber zu schreiben, dann komme ich doch nie am Ziel an, wo ich ankommen will.
-
-
@Krux,
Dann sag doch, dass du eine Bibliothek dazu suchst. Im C++ Standard gibt es momentan nichts dafür.
Nebst dem oben genannten, könnte vielleicht dies noch interessant sein:
http://www.icu-project.org/Ansonsten einfach mal das Inet durchsuchen nach UTF-8 C++ wchar_t dann sollte man doch fündig werden

Grüssli
-
eventuell... schrieb:
getestet, und funktioniert nicht, aber ich kann nicht sagen, ob es an dem Projekt liegt, oder ob einfach nur wcout nicht mit Umlauten funktioniert, aber eigentlich sollte man davon ausgehen können, das es geht.
wstring tmp; char tmp2[] = "abäöss"; tmp.resize(7); utf8::utf8to32(tmp2,tmp2+sizeof(tmp2)-1,tmp.begin()); wcout << tmp << endl;Ausgabe:
ab??ssnaja immerhin schonmal besser als garnichts
-
Krux schrieb:
char tmp2[] = "abäöss";Dir ist schon klar, dass dieses Literal nichts mit UTF-8 zu tun hat, sondern wahrscheinlich einfach mit einem erweiterten ASCII-Zeichensatz? Oder sonst irgendeinem Zeichensatz, aber jedenfalls ganz sicher nichts mit UTF-8!
Zudem kann ein
std::wstringauch nur 2 Bytes pro Charackter haben. Würde also aufpassen mit diesem utf8to32.Grüssli