Schließen?



  • Es steht zwar in den faqs aber irgendwie scheine ich das nicht zu kapieren wie verhindere ich das automatische beenden der console z.b bei diesem simplen programm aus dem turtorial?

    #include <iostream>
    #include <string>
    using namespace std;

    void main()
    {
    string name;
    cout<<"Wie heissen Sie? ";
    cin>>name;
    cout<<"Hallo, "<<name<<'!'<<endl;

    Danke



  • #include <iostream>
    #include <string>
    #include <conio.h>
    using namespace std;
    void main()
    {
    string name;
    cout<<"Wie heissen Sie? ";
    cin>>name;
    cout<<"Hallo, "<<name<<'!'<<endl;
    getch(); //Programm wartet, bis eine Taste gedrückt wird
    } //Klammer zu!!!
    


  • danke



  • Hallo,
    da es sich hier nicht um Standard-C++ handelt, verschiebe ich das mal ins Konsolenforum.



  • @Darko: Der hier gezeigt Weg (eben nicht genau der aus der FAQ) kann aber manches Mal zu Problemen führen und dein Programm wird trotzdem geschlossen - da ja getch() ein Zeichen aus dem Puffer liest in welchem schon etwas stehen könnte.

    Du musst ihn vorher noch löschen im Falle von getch() musst du noch die <windows.h> einbinden und ein FlushConsoleInputBuffer (GetStdHandle(STD_INPUT_HANDLE)); davorsetzen.

    MfG SideWinder



  • also in der Headerdate von einem Freud steht das so:

    #define TPL fflush(stdin)
    

    Und der benutzt das dann so:
    TPL;
    Und er hat nirgends die windows.h drinne!

    P.S.: Machs doch einfach mit getchar(); aus der stdio.h.

    [ Dieser Beitrag wurde am 20.03.2003 um 18:45 Uhr von quizzmaster editiert. ]



  • fflush(stdin)

    das erzeugt undefiniertes verhaltes 😡



  • fflush (stdin) erzeugt ein undefiniertes Verhalten - dein Programm kann dann auch genauso gut die Festplatte löschen anstatt den Puffer zu leeren.

    Desweiteren bringt getchar() hier nichts, da - obwohl nur ein Zeichen verwertet wird, vom User nicht nur mehrere eingeben werden können sondern es wird auch noch auf das nächste Enter gewartet - in diesem Falle also völlig sinnlos.

    Also bitte vorher erkundigen 🙂 - steht eigentlich alles in der FAQ.

    MfG SideWinder



  • OK, das mit getchar() ist verständlich.
    Aber warum kann fflush(stdin) meine Festplatte löschen? 😮

    P.S.: Funktioniert dein weg auch unter reinem DOS?

    [ Dieser Beitrag wurde am 21.03.2003 um 08:46 Uhr von quizzmaster editiert. ]



  • Aber warum kann fflush(stdin) meine Festplatte löschen?

    das war nurn übertriebenes beispiel. 😃



  • Natürlich löscht es jetzt so gut wie niemanden die Festplatte (wahrscheinlich gar keinem) aber undefiniertes Verhalten heißt trotzdem "mach was du willst, eventl. lösch den stdin-puffer aber wenns dir keinen spaß macht lösch die festplatte" ;).

    MfG SideWinder


Anmelden zum Antworten