cin.get()/cin.putback() <-- Was machen die
-
Jud4s schrieb:
Und wenn man jezz kein putback befehl nimmt... aber erneut einen get.... wird dann das alte Zeichen das eingelesen wurde 'zerstört'??
Nein. Das bis dahin aktuelle Zeichen kommt an die zweite Position des Streams, so daß du es beim übernächsten mal auslesen kannst.
Jud4s schrieb:
PS: Könnted ihr mir vll ein Anfängerbuch für Cpp empfehlen?? Ein gutes wenn möglich
ich, habe bereits "Die Programmiersprache C++" von Bjarne Stroustrup, merke allerdings das es für mich Wochen dauert bis ich ein Kapitel 'verdaut' habe.Der Stroustrup ist eine harte Nuß.
Ich würde dir "C++: Eine Einführung" von Ulrich Breymann, Hanser Verlag, empfehlen.
-
Es heißt einfach nur, das ein Zeichen durch putback an den Anfang des Streambuffers gesetzt wird. Beim nächsten Einlesen wird dann dieses mit eingelesen und somit aus dem Streambuffer wieder entfernt.
-
Nein. Das bis dahin aktuelle Zeichen kommt an die zweite Position des Streams, so daß du es beim übernächsten mal auslesen kannst.
heisst das dann bei '1' '+' wird dann beim putbackbefehl '+' '1' eingelesen????
Meintest du http://www.amazon.de/C%2B%2B-Eine-Einf%C3%BChrung-Ulrich-Breymann/dp/3446192336/ref=sr_1_3?ie=UTF8&s=books&qid=1205085597&sr=1-3???
-
Pass auf. Im Streambuffer steht jetzt (wahrscheinlich weil du es eingegeben hast
) z.B. "1+1=2". Durch das get, bekommst du das erste Zeichen => Im Buffer steht noch "+1=2". Mit putback kannst du jetzt ein Zeichen an den Anfang deines Streambuffers setzen. Wenn du z.B. std::cin.putback('9'); dann ausführen würdest, stünde im Streambuffer "9+1=2".
-
Mal angenommen im Stream stehen die Zeichen '1','2' und '3'
Wenn du ein Zeichen liest (die 3), dann Stehen im Stream nur noch die '1' und die '2'.
Rufst du nun putback ('4') auf, dann stehen im Stream: '1','2','4'.
Der nächsten cin.get()-Aufruf würde die '4' lesen, der übernächste die '2' und der letzte die '1'.
-
keyy... ist interressant....
gibt es Vorgaben was ich in was setzen darf?? Gibt der Compiler z.b. ein Fehler aus wenn ich in eine *char eine '9' einlesen will, oder in eine int ein 'c'??? Oder wird das dann zu einem laufzeitfehler??
-
Jud4s schrieb:
Meintest du http://www.amazon.de/C%2B%2B-Eine-Einf%C3%BChrung-Ulrich-Breymann/dp/3446192336/ref=sr_1_3?ie=UTF8&s=books&qid=1205085597&sr=1-3???
Genau das.

-
superb... dann weis ich ja was ich mir demnächst bestelle... vielen dank....^^
-
Jud4s schrieb:
gibt es Vorgaben was ich in was setzen darf?? Gibt der Compiler z.b. ein Fehler aus wenn ich in eine *char eine '9' einlesen will, oder in eine int ein 'c'??? Oder wird das dann zu einem laufzeitfehler??
Beide Funktionen arbeiten (nur) mit char, von daher ist die Frage hinfällig.
Es gibt allerdings die Beschränkung, dass das zurückgelegte Zeichen exakt das Zeichen sein muss, welches zuletzt gelesen wurde (27.5.2.2.4).
-
Jud4s schrieb:
keyy... ist interressant....
gibt es Vorgaben was ich in was setzen darf?? Gibt der Compiler z.b. ein Fehler aus wenn ich in eine *char eine '9' einlesen will, oder in eine int ein 'c'??? Oder wird das dann zu einem laufzeitfehler??
da '9' als zeichen eingelesen wird und nicht als zahl klappt das wunderbar.
wenn man ein nicht-numerisches zeichen in einen int einliest, wird normalerweise der ASCII-code für dieses zeichen in der variablen gespeichert.
also kein compiler-error, aber vielleicht ein bug / unvorhergesehenes verhalten des programms. und die meisten compiler geben wohl ein warning.