umlaute in msv c++ 2005
-
hi.
bin gerade ein bischen am rumprobieren und verstehe hier gerade nicht, was der compiler mir damit sagen will:ich will einen text schreiben, der einen umlaut enthält, aber ich erhalte ständig die fehlermeldung: "error c2022 zu groß für ein zeichen" was bedeutet das.
ich habe es auf verschiedene arten probiert, hab dann auch hinbekommen, aber finde nirgend eine erklärung dafür. hoffe ihr könnt mir weiter helfen. danke.cout << "Dr\x81" "cken"; // Das funktionert cout << "Dr\x81cken"; // Das funktioniert nicht. error c2022.
warum??
-
Die Windows Console benutzt die sogenannte OEM-Code page.
Du kannst mit CharToOEM einen entsprechenden String umwandeln.
http://msdn.microsoft.com/en-us/library/ms647473(VS.85).aspx
http://blogs.msdn.com/b/oldnewthing/archive/2005/08/29/457483.aspx?wa=wsignin1.0
-
das schnall ich nicht. kannst du mir das mal erklären?
-
Dein Problem besteht darin, daß Hex-Escape-Zeichen (\x...) soweit ausgewertet werden, wie der Compiler hexadezimale Ziffern findet - d.h. er betrachtet das c auch als Teil der Escape-Sequenz - und \x81c (umgerechnet 2076) ist zu groß, um in ein übliches char zu passen.
(die erste Variante funktioniert, weil der Compiler erst die Escape-Sequenzen auswertet und danach die String-Literale verbindet.