Anfängerproggi läuft nicht :((
-
Heyho

Befinde mich gerade in den Anfängen meiner steilen Programmierkarriere.
Wollte ein Programm schreiben, das mir zu einem eingegebenen Buchstaben denselbigen in der jeweils anderen Größe ausgibt.
Und bei Umlauten funktioniert'S nicht.
Nun hab ich die naheliegende VErmutung, dass es mit meinem internen Zeichensatz nicht so ganz hinhaut.
Hier der Code:#include <iostream> using namespace std; int main() { char c1, c2; cin >> c1; if(c1 >= 'a' && c1 <= 'z') c2 = c1 - 'a' + 'A'; else if(c1 >= 'A' && c1 <= 'Z') c2 = c1 + 'a' - 'A'; else if(c1=='ü') c2 = 'Ü'; else if(c1=='ö') c2 = '\Ö'; else if(c1=='ä') c2 = 'Ä'; else if(c1=='Ü') c2 = 'ü'; else if(c1=='Ö') c2 = 'ö'; else if(c1=='Ä') c2 = 'ä'; else cout << "Sie haben keinen Buchstaben eingegeben. \n\n"; cout << c2 << "\n\n"; system("pause"); return 0; }So, was mach ich denn genau falsch?
HAbe statt der Umlaute auch schon so einige Hexzeichen versucht, wie zB für ö \x94 genommen etc.
Mir wird immer bei Umlauten angezeigt, ich hätte keinen Buchstaben eingegeben.
Und das ist gelogen.
Ich bin es leid, von meinem eigenen Programm belogen zu werden..
Ich hoffe, ihr könnt mir helfen!
Bitte bedenkt nochmal, dass ich ein absoluter noob bin und mit Fachwörtern in der Regel nüscht anfangen kann.
Danke im Voraus
Christopher
-
Der Backslash bei dem großen Ö(Zeile 14) gehört natürlich nicht dazu.
-
Das liegt daran, daß die Umlaute in deinem (Windows-)Editor und auf der (DOS-)Konsole verschiedene ASCII-Codes haben, da beide Systeme unterschiedliche Code-Pages verwenden.
Du müßtest dann schon die für die Konsole entsprechenden Codes einsetzen.Mittels
echo "äöüÄÖÜ" >test.txtauf der DOS-Konsole kannst du dir die Zeichen in eine Datei schreiben lassen und dann mit einem Hex-Editor dir die Codes auslesen und diese dann in hexadezimaler Darstellung in deinem Quelltext einsetzen.
-
Okay werd ich probieren, vielen Dank! :))
Ich hab WinXP,
gibt es da einen konkreten ZEichsatz, so dass ich die Codes auch aus der Tabelle auslesen kann?
-
Habe ich mal gerade selber gemacht:
ä = \x84
ö = \x94
ü = \x81
Ä = \x8E
Ö = \x99
Ü = \x9AAlternativ kannst du auch für deinen Programm-Code die Funktionen 'toupper()' und 'tolower()' aus 'ctype' benutzen.
Damit dies dann auch für die Umlaute funktioniert, müßtest du dann noch die 'locale'-Einstellung auf Deutsch ändern:#include "locale.h" setlocale(LC_TYPE, "de");
-
Auf deine Frage: der Zeichensatz lautet "Terminal".
-
Super, mit dem HExcodes funktionierts.
Das mit dem Funktionen hab ich nicht verstanden, aber ich bin erst im Kapitel
KOntrollstrukturen ^^
Auf jeden Fall vielen Dank für die Hilfe
(so schnell wie das ging, komm ich öfters her
)