ein Programm, Buchstaben in Großbuchstaben umzuwandeln..aber funktioniert bei ä nicht wie gewünscht.wo ist der Fehler?
-
ein Beispiel genau vom Buch abgeschrieben:
//gleich vom Buch # include <iostream> # include <cctype> using namespace std; int main() { char c; while ( cin.get(c) ) { switch(c) { case 'ä': c = 'Ä'; break; case 'ß': cout.put('S'); c = 'S'; break; default : c = toupper(c); } cout.put(c); } return 0; }aber wenn ich ä eingebe, wird auf der Konsole trotzdem der Kleinbuchstabe ä angezeigt, nicht Ä. Wo ist der Fehler denn?
ich habe selber nach Aufgabestellung folgendes Beispiel geschrieben, auch zur gleichen Nutzung, alle Buchstaben in Großbuchstaben umzuwandeln.
#include <iostream> #include <cctype> using namespace std; int main() { char c; cout << "Geben Sie ein Zeichen ein: "; while(cin.get(c)) //solange c ein Zeichen ist, kann es in c gelesen werden { switch(c) { case 'ä': c='Ä'; break; case 'ß': c='S'; break; default: c = toupper(c); //andere Zeichen } cout.put(c); cout << endl << endl; cout << "Geben Sie noch ein Zeichen ein, dann wiederholt dieses Spiel," << "eine Zahl oder ein String führt zum Schluss mit dem Spiel. " << endl; } return 0; }aber das ist anscheinend noch falscher, der Satz, "Geben Sie noch ein Zeichen ein, dann wiederholt dieses Spiel, eine Zahl oder ein String führt zum Schluss mit dem Spiel. " wird zweimal angezeigt..
verstehe ich nicht...

also danke für die nette Hilfe im Voraus.

-
Falscher Zeichensatz? Datei <-> Console
-
Fehler!Hilfe?
-
Wie bereits gesagt wurde, der Zeichencode des Textes (bzw. Codes), den du in der Entwicklungsumgebung eingibst und der des Ausgabetextes der Konsole (ASCII) sind nicht identisch. Ein Beispiel dafür sind eben die Umlaute.
Du kannst das umgehen, indem du mit
cinUmlaute in die Konsole eingibst und dann deren ASCII-Nummer ausgeben lässt. Dann kannst du diese Nummer in die Case-Statements einfügen.Und wähl einen aussagekräftigen Threadtitel!
-
Das Problem ist: das erste Beispiel ist genau so von einem Programmierbuch abgeschrieben, aber wenn ich selber das compiliere und laufe, wird nicht gewünscht Ä (Großbuchstabe), sondern einfach ä(Kleinbuchstabe) ausgegeben.
Das Programm soll alle eingegebene Buchstaben in entsprechenden Großbuchstaben umwandeln und ausgeben.
Bei dem 2. Beispiel, meinem eigenen Versuch, ist der Platz für den letzten Satz falsch? das wird zweimal angezeigt auf der Konsole...
Danke für den Tipps zum Titel...hab schon überlegt, aber bin nicht ganz sicher, was für aussagekräftige Titel ich aus meinem Problem zusammenfassen konnte... Deutsch ist auch ein kleines Problem für mich.
Aber ich werde mich verbessern.wie gesagt, ich verstehe meinen Fehler bei beiden Programme immer noch nicht. Das hat anscheinend nichts mit der Umlaut zu tun. Wäre nett, wenn jemand mir mal einleuchten würde.
-
yinxue schrieb:
...hab schon überlegt, aber bin nicht ganz sicher, was für aussagekräftige Titel ich aus meinem Problem zusammenfassen konnte...
Wie wär's mit
yinxue schrieb:
...
wenn ich ä eingebe, wird auf der Konsole trotzdem der Kleinbuchstabe ä angezeigt, nicht Ä...Das trifft's doch, oder ?
Gruß,
Simon2.
-
Hast du meinen Beitrag vorher überhaupt gelesen?
Merk dir doch die ASCII-Nummer der Umlaute (dein Problem hat etwas mit Umlauten zu tun, weil bei normalen Buchstaben geht es ja), indem du z.B. 'ä' eingibst und dir dann die Nummer als int ausgeben lässt.char a; cin >> a; // Hier gibst du die Umlaute ein cout << static_cast<int>(a); // Hier bekommst du die ASCII-Nummer (jedoch zwischen -127 und 128)Dann merkst du dir die Ausgaben und schreibst z.B.:
case -124: /* wenn ä kommt */ break;Und wenn du deinen Satz nur einmal anzeigen willst, ersetze doch die While-Schleife durch eine If-Abfrage.