ERLEDIGT
JA
JA
ANTWORTEN
4
4
ZUGRIFFE
646
646
EMPFEHLEN
-
Halli Hallo liebe Gemeinschaft,
ich lerne seit einigen Tagen C++ und habe mir schon ein tolles Buch darüber gekauft, bin jetzt aber an einer Stelle gestolpert, wo ich nicht weiter komme.
Im Buch steht folgender Code:
Wirkung des Codes: Wenn ich nach Bitte den Wert von 'w' eingeben eine Zahl eingebe, sollte er als nächsten Satz den unteren anzeigen und w*2 rechnen. Wenn ich jedoch eine Zahl eingebe und Enter klicke, dann schließt sich das CMD.PHP-Code:#include <iostream>
using namespace std;
int main() {
cout << "\nBitte den Wert von 'w' eingeben: ";
int w;
cin >> w;
cout << "Der Wert von 'w' mal 2 ist " << w*2;
return 0;
}
Kann mir jemand erklären wieso? Muss ich ein cin.get(); einbauen?
-
Hi,
die Sache ist, dass dein Programm sobald es "return 0;" erreicht zuende ist. Daher schließt sich die Konsole auch sofort.
Die Möglichkeit für dich die am besten funktioniert ist folgende. Schreib einfach vor dein return
Code cpp:1
getchar();
So wartet das Programm nach der Ausführung noch eine beliebige Taste.
GrußWas soll daran kompliziert sein? Es muss doch nur ein Rad bewegt werden, man kann aufsteigen, es kommt die Matschhütte und durch den Regenbogen gelangst du zum hungrigen Affen, der Affenschwanz wird gezogen und bums kommst du zum Paradispark.
-
30.03.10 21:49 #3
- Registriert seit
- Jun 2005
- Beiträge
- 8.168
If at first you don't succeed, try again. Then quit. No use being a damn fool about it.
-
Hey,
wenn ich
mache geht es perfekt, jedoch verstehe ich nun nicht wieso es erst mit 2 cin.get(); s geht. Kann mir das jemand erklären?PHP-Code:#include <iostream>
using namespace std;
int main() {
cout << "\nBitte den Wert von 'w' eingeben: ";
int w;
cin >> w;
cin.get();
cout << "Der Wert von 'w' mal 2 ist " << w*2;
cin.get();
return 0;
}
-
Du gibst 24 ein und drückst die Entertaste. In der Eingabewarteschlange sind jetzt das Zeichen '2', das Zeichn '4' und das Zeichen '\n'. Dann holst du eine Zahl aus der Warteschlange, das wäre dann 24. Daher werden '2' und '4' aus der Eingabewarteschlange entfernt. Aber das '\n' der Entertaste ist immernoch am Warten. Dann rufst du std::cin.get() auf. Das wiederum holt ein Zeichen aus der Warteschlange oder wartet bis eines kommt. Da ja das '\n' noch drin ist wird dein ersters Aufruf dieses '\n' zurückgeben und nicht warten. Erst dann ist der Eingabestrom leer und ein erneuter Aufruf von std::cin.get() führt so einem blockierenden Verhalten bis zur Eingabe.
Wie dir bereits deepthroat gezeigt hat solltest du den Eingabestrom zuerst mit std::cin.sync() von allfälligen Relikten befreien und dann std::cin.get() aufrufen.
Ähnliche Themen
-
variable via php übermitteln
Von Godstyle im Forum PHPAntworten: 5Letzter Beitrag: 21.04.08, 17:48 -
ip übermitteln
Von wpb im Forum NetzwerkeAntworten: 4Letzter Beitrag: 24.02.06, 19:20 -
An PDF übermitteln
Von ruNN0r im Forum PHPAntworten: 4Letzter Beitrag: 29.10.05, 20:05 -
werte übermitteln
Von MasterPhil im Forum Javascript & AjaxAntworten: 4Letzter Beitrag: 29.04.05, 22:48 -
Daten übermitteln aus 2 DB´s, wie?
Von icefire im Forum PHPAntworten: 2Letzter Beitrag: 16.07.04, 18:08





Zitieren

Login






