Deutsche Umlaute in C++ (Win7 cmd)

Hallo, ich versuche gerade ein kleines Textadventure zu schreiben, dass in der Windows-Shell laufen soll, leider scheitere ich aber an den Umlauten, ich habe bis jetzt zwei Wege versucht dem Programm den deutschen Zeichensatz beizubringen.

Variante 1:
setlocale(LC_ALL,„German“);

Hier werden mir in der Ausgabe alle Zeichen richtig angezeigt, wenn ich aber einen Text über cin einlese und dann wieder ausgeben lassen werden falsche Zeichen ausgegeben.

Variante 2:
#include
locale loc("");
locale::global(loc);

Hier ist zwar die Ausgabe über einen mit cin eingelesenen Text okay, dafür machen alle anderen cout ausgaben nur Kraut und Rüben…

Weiß da jemand Rat? (Die Standardlösungen wie *\x84 * statt einem ä halte ich für ungeeinet.
)

Hallo,

>> Hier ist zwar die Ausgabe über einen mit cin eingelesenen Text
>> okay, dafür machen alle anderen cout ausgaben nur Kraut und Rüben…

Das klingt für mich danach, dass C+±mäßig alles funktioniert, aber der Editor, wo der Quelltext eingegeben wird, eine andere Code Page verwendet, als das C+±Programm.

Probier mal folgendes:

Im Editor hälst du Alt gedrückt und tippst auf dem 10er-Block 132 ein, und Alt loslassen. Im Notepad von Windows erscheint dann ein ‚ä‘, bei Dir im Editor eventuell was anderes. (Meine vermutung: Wenn du das gerade erzeugt Zeichen mit cout ausgibst, sollte ‚ä‘ erscheinen)

Evt. den Editor umstellen (Stichworte: Code-Pages, UniCode, Latin1, http://msdn.microsoft.com/en-us/goglobal/bb964653), oder anderen Editor ausprobieren?

Oder besteht die Möglichkeit std::wstring, std::wcout etc zu verwenden? (http://stackoverflow.com/questions/402283/stdwstring…)

Hilft das weiter?

Viele Grüße
McGee

Danke für deine Antwort,
leider blieben bis jetzt alle versuche erfolglos… Wenn ich im Editor (CodeBlocks) alt+132 eintippe erhallte ich zwar ein ‚ä‘ im Editor, im kompilierten Programm wird dieses dann aber als ‚õ‘ ausgegeben.
Esseiden ich stelle den Befehl setlocale**(LC_ALL,„German“);** voran. Dann wird in der cin Eingabe aber aus dem ‚ä‘ ein ‚"‘… (auch wenn ich es über alt+132 eingebe…)

Hallo,

hab einen post gefunden, der nach deinem Problem aussieht:
http://forums.codeblocks.org/index.php?topic=9997.0

Danach arbeitet codeblocks mit codepage WINDOWS-1252, die Win7 console (bei mir) mit 850. Am besten nochmal in CodeBlocks nachprüfen mit „Settings -> Editor: Default encoding when opening files“.
Kann man dort auch die CodePage ändern?

Jedenfalls läßt sich mit „chcp 1252“ die CodePage in der Win7 console umstellen, siehe http://stackoverflow.com/questions/1259084/what-enco…

Um es nicht manuell machen zu müssen, ist hier beschrieben, wie man Befehle an die Console schickt: http://www.cplusplus.com/reference/clibrary/cstdlib/…

Also: Wenn die Win7 console und CodeBlocks die gleiche CodePage verwenden, sollte es gehen :smile:

Viele Grüße
McGee