tutorials.de Buch-Aktion 05/2012
ERLEDIGT
JA
ANTWORTEN
4
ZUGRIFFE
646
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Udem Udem ist offline Mitglied Bronze
    Registriert seit
    Aug 2009
    Beiträge
    44
    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:
    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;

    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.

    Kann mir jemand erklären wieso? Muss ich ein cin.get(); einbauen?
     

  2. #2
    Avatar von Jennesta
    Jennesta Jennesta ist offline Mitglied Gold
    Registriert seit
    Sep 2007
    Ort
    Aachen
    Beiträge
    215
    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.

  3. #3
    deepthroat deepthroat ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Jun 2005
    Beiträge
    8.168
    Zitat Zitat von Jennesta Beitrag anzeigen
    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.
    Das ist nicht ganz richtig. Da das Zeilenendezeichen noch im Eingabepuffer ist wird das nichts ändern. Und in C++ sollte man lieber die Streams verwenden:
    Code cpp:
    1
    2
    
    cin.sync();
    cin.get();
    Gruß
     
    If at first you don't succeed, try again. Then quit. No use being a damn fool about it.

  4. #4
    Udem Udem ist offline Mitglied Bronze
    Registriert seit
    Aug 2009
    Beiträge
    44
    Hey,
    wenn ich
    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;

    mache geht es perfekt, jedoch verstehe ich nun nicht wieso es erst mit 2 cin.get(); s geht. Kann mir das jemand erklären?
     

  5. #5
    Cromon Cromon ist offline Mitglied Brillant
    Registriert seit
    Apr 2008
    Beiträge
    819
    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

  1. variable via php übermitteln
    Von Godstyle im Forum PHP
    Antworten: 5
    Letzter Beitrag: 21.04.08, 17:48
  2. ip übermitteln
    Von wpb im Forum Netzwerke
    Antworten: 4
    Letzter Beitrag: 24.02.06, 19:20
  3. An PDF übermitteln
    Von ruNN0r im Forum PHP
    Antworten: 4
    Letzter Beitrag: 29.10.05, 20:05
  4. werte übermitteln
    Von MasterPhil im Forum Javascript & Ajax
    Antworten: 4
    Letzter Beitrag: 29.04.05, 22:48
  5. Daten übermitteln aus 2 DB´s, wie?
    Von icefire im Forum PHP
    Antworten: 2
    Letzter Beitrag: 16.07.04, 18:08