char* in UTF8 ausgeben -> cout < str << endl;
-
Sorry, war eben nicht eingeloggt!
Ich bin cHunter!---------------------------------------------------------------------------
Hallo!
Eigentlich entwickel ich ja bevorzugt in Objective-C.
Auch habe ich ein wenig Programmiererfahren in C++ nur mein aktuelles Problem lässt sich für mich so einfach nicht lösen.
Ich möchte das Problem mal etwas skizzieren:
char *variable = "Öö Üü Ää èÈ"; cout << "variable: " << variable << endl; Konsolenausgabe: variable: Í÷ ▄³ ─õ Þ╚Ich denke, das cout nur ASCII "versteht".

Was muss ich tun um die variable über cout in UTF8 ausgeben lassen zu können?
Ich habe schon zig Foren durchsucht und in der Lektüre nachgeschaut - bisher konnte ich noch keinen guten Lösungsansatz finden der auch tatsächlich funktionierte.Über jede Hilfe würde ich mich sehr freuen! :xmas1:

Ich möchte den Wert der Variable nicht nur in UTF8 auf der Konsole ausgeben sondern möchte mit dem Wert im UTF8-Zeichensatz weiterarbeiten.
Also Beispielsweise in einer Datenbank ablegen können - in UTF8 - oder in eine Textdatei schreiben.
Schönen Gruss, cHunter *gg
-
Das ist absolut Compilerabhängig. Zum beispiel, ob er die Umlaute im Quelltext akzeptiert. Und selbst dann ist noch nicht garantiert, dass er sie in string-Literalen auch akzeptiert. In C++11 gibts utf8-Stringliterale. Damits dort auch portabel ist, müsstest du die Umlaute dann allerdings trotzdem noch mit \uXXXX unicode-Codierungen angeben.
-
Vielen Dank für deine Unterstützung!
Ich habe nun einen Ansatz gefunden - zumindest sieht es sehr danach aus:
wchar_t wData[200]; MultiByteToWideChar(CP_UTF8, 0, "hallöle", -1, wData, 200); wcout << "# " << wData << endl; Konsolenausgabe: # hallEr bricht vor dem ö ab.
Quelle: http://msdn.microsoft.com/en-us/library/windows/desktop/dd319072(v=vs.85).aspx
Wieso könnte das so nicht funktionieren?

-
Nochmal:
pumuckl schrieb:
Zum beispiel, ob er [der Compiler] die Umlaute im Quelltext akzeptiert. Und selbst dann ist noch nicht garantiert, dass er sie in string-Literalen auch akzeptiert.
-
pumuckl schrieb:
Das ist absolut Compilerabhängig. Zum beispiel, ob er die Umlaute im Quelltext akzeptiert. Und selbst dann ist noch nicht garantiert, dass er sie in string-Literalen auch akzeptiert. In C++11 gibts utf8-Stringliterale. Damits dort auch portabel ist, müsstest du die Umlaute dann allerdings trotzdem noch mit \uXXXX unicode-Codierungen angeben.
Danke für deine wertvolle Anregung.
Ich habe soeben bemerkt, dass das Zielsystem kein UTF-8 erwartet sondern ANSI.
Nun funktioniert das auch mit meinen Sonderzeichen.
Nachfolgend meine Lösung für die Nachwelt:
void Class::strcpy_cw(wchar_t* Dest, char* Src) { // e.g. 255 MultiByteToWideChar(CP_ACP, 0, Src, -1, Dest, 255); }Schönen Gruss, cHunter^^