In C++ das Programm nur durch eine bestimmte Taste beenden?



  • Guten Morgen,guten Mittag,oder auch Guten Abend 😉

    Ich bin hier erst ein neuling so wie im programmieren algemein

    Ich probier immer ein bisschen rum und wollte das dass Programm nur beendet wird wenn ich eine bestimmte Taste drücke in dem Fall wollte ich das mit der Esc Taste beenden.
    Bin schon ganzen Tag am googlen und rumprobieren hab aber immer noch keine Ahnung wie es gehen könnte.
    Wäre geil wenns mir jemand erklären könnte 🙂

    Das ist die kleine Übung die ich gemacht habe falls es was bringt 😃
    ///////////////////////////////////////////////////////////////////////////////
    #include "stdafx.h"
    #include <iostream>

    using namespace std;

    int main()

    {

    cout << "------ \x9a \bbung 13 ------ \n\n";

    int eingabe;
    int x = 0;

    cout << "wie oft wollen Sie"
    " \"Hallo\" ausgeben?";

    cin >> eingabe;
    while(x<eingabe)

    {
    cout << "Hallo" << endl;
    x++;
    }

    system("pause");

    return 0;

    }



  • Siehe hier: Wie es mit getch() aus <conio.h> gehen könnte und warum man system("PAUSE") nicht verwenden soll: https://www.c-plusplus.net/forum/345259



  • Und _kbhit()

    Ein Beispiel aus msdn:

    // crt_kbhit.c  
    // compile with: /c  
    /* This program loops until the user  
     * presses a key. If _kbhit returns nonzero, a  
     * keystroke is waiting in the buffer. The program  
     * can call _getch or _getche to get the keystroke.  
     */  
    
    #include <conio.h>  
    #include <stdio.h>  
    
    int main( void )  
    {  
       /* Display message until key is pressed. */  
       while( !_kbhit() )  
          _cputs( "Hit me!! " );  
    
       /* Use _getch to throw key away. */  
       printf( "\nKey struck was '%c'\n", _getch() );  
    }
    

    Wie man dies in C++ löst, würde mich aber auch interessieren.



  • Öhm, ich hoffe doch jetzt, das es nicht nur um das schlichte Beenden der Konsole mittels ESC geht? 😕

    Dann würde ich, wenn schon unter Windows, GetKeyState() oder GetAsyncKeyState() vorschlagen.

    EDIT: Sorry für die Selbstgespräche, aber dies wäre auch der Ansatz für meine obige Frage. Naja, man lernt ja ständig was dazu...



  • Haha ich Kriegs einfach nicht hin hab alles durchgelesen mit dem Getch() hab das auch vorher schonmal ausprobiert aber immer irgendwelche Fehlermeldungen bekommen



  • Jupp, und?

    Hast Du es inzwischen hinbekommen? Oder kann man Dich abschreiben?



  • nein hab immer noch keine Ahnung.
    Währe halt nice wenn mir irgendwer ein beispiel dazu zeigt.
    Wenn einer schreibt es könnte damit gehen (irgendein begriff) sagt mir das nicht wirklich was da ich noch Anfänger bin 😃



  • keine Ahnung, ob es das ist was du wolltest, ober falls du möchtest, dass er in der Schleife abbricht wenn ESC gedrückt wird, dann kann das so aussehen:

    #include <iostream>
    #include <windows.h>
    
    int main()
    
    {
    
        std::cout << "------ \x9a \bbung 13 ------ \n\n";
    
        int eingabe;
        int x = 0;
    
        std::cout << "wie oft wollen Sie Hallo ausgeben?";
    
        std::cin >> eingabe;
        while(x < eingabe) {
            std::cout << "Hallo" << std::endl;
            x++;
            if(GetAsyncKeyState(VK_ESCAPE)) { break; }; //Wenn Taste Esc gedrückt, bricht schleife ab
            Sleep (300); //eine kleine Verweilzeit, kein muss
        }
    
        system("pause");
    
        return 0;
    
    }
    

    (wahrscheinlich musst du bei dir noch deine stdafx.h noch includen)



  • Danke dir war sehr hilfreich 🙂 🙂 🙂



  • spoonfeeding at its finest....


Log in to reply