Ich versuche Textpakete über das Netzwerk mit Winsock zu senden. Der Text wird jedoch als wchar_t gespeichert und ich muss in der Lage sein, den Text für das Senden über das Netzwerk in das Byte-Format (char) zu konvertieren, das dann in wchar_t zurückkonvertiert wird.Senden Unicode (Win32) Textpakete über das Netzwerk mit Winsock?
Ich habe mit der Verwendung von ostringstream experimentiert und habe die wchar_t-Zeichenkette von mir in das umgewandelt, was wie Byte-Format aussieht, aber wenn ich versuche, umgekehrt zu gehen, bekomme ich eine Ladung Kauderwelsch.
Ich kann nicht scheinen, irgendwelche Antworten beim Schauen online zu finden, so würde jede Hilfe sehr geschätzt werden.
OK hier ist ein Code, mit dem ich gespielt habe.
std::wstring text(ieS("Hello"));
std::ostringstream ostr;
ostr.imbue(std::locale());
ostr << text.c_str();
std::string text2 = ostr.str();
In std :: string konvertieren, um das Zeichenformat zu erhalten.
std::wostringstream wostr;
wostr.imbue(std::locale());
wostr << text2.c_str();
text = oss.str(); // gibberish
Konvertieren zurück in std :: wstring Wchar_t Format zu bekommen ...
Geben Sie einen Code ein. –
Sie müssen genauer betrachten, wie Unicode dargestellt wird - es klingt, als ob Sie einige Annahmen über die Länge usw. haben. Wenn Bytes ankommen, müssen Sie genügend Informationen bereitstellen, um die Bytes in ein Unicode-Zeichen zu dekodieren. –
Sie sollten wahrscheinlich UTF-8 verwenden, wenn die Dinge in jedem Fall über das Netzwerk gehen. –