c/c++ Eingabe zurücksetzen/puffer leeren



  • Hallo,

    ich hab eine frage zu folgendem Code:

    cout<< "Starte Spiel-Simulation!" << endl;
    	Sleep(19500);
    	cout << "Bereit? [ENTER] klicken!" << endl;
    	getchar();
    	cout << "Viel Spass!" << endl;
    	Sleep(2500);
    	system("cls");
    

    da ist eig. noch uninteressanter Text dazwischen, mit dem ich euch aber nicht nerven will.
    Jetzt zur Frage:
    Wenn man während der Sleepfunktion öfters Enter klickt, werden diese danach komplett übernommen. Kann man diesen puffer irg wie leeren? (cin.ignore() hat nicht so recht funktioniert..) 😕 😕
    Ich will quasi, dass keine Eingabe bevor die Sleepfunktion abgelaufen ist, akzeptiert wird - also man auf jeden fall Enter klicken muss, wenn

    cout << "Bereit? [ENTER] klicken!" << endl;
    

    erscheint.

    Danke schonmal im vorraus! 😃



  • Schlau, dass du weder Code mit ignore zeigst noch erklärst, was "nicht so recht funktioniert" heißt - sonst hätte ja vielleicht jemand den Fehler korrigieren können.



  • manni66 schrieb:

    Schlau, dass du weder Code mit ignore zeigst

    was meinst du damit?

    was "nicht so recht funktioniert" heißt, sollte klar sein:
    geht nicht. 😉



  • Mit "schlau" habe ich dich wohl überschätzt...



  • Diese Funktion leert Deinen Puffer unter Windows:

    void consumeInput()
    {
        INPUT_RECORD ir;
    
        DWORD dummy;
    
        PeekConsoleInput(GetStdHandle(STD_INPUT_HANDLE), &ir, 1, &dummy);    
    
        while(dummy)
        {
            ReadConsoleInput(GetStdHandle(STD_INPUT_HANDLE), &ir, 1, &dummy);
            PeekConsoleInput(GetStdHandle(STD_INPUT_HANDLE), &ir, 1, &dummy);
        }
    }
    

    Sie benötigt den Header

    windows.h
    

Log in to reply