c++ Abbruch mit Esc ohne Enter unter Linux



  • Hallo,

    ich möchte das eine while-schleife solange läuft bis die ESC-Taste gedrückt wird. ungefähr so:

    int main ()
    {
    
    bool x = true;
      while(x != true)
      {
        std::cout << "drücke ESC-Taste! \n";
           if(ESChit())
           break;
      }
    
    return 0;
    }
    

    es soll aber keine Enter-Eingabe nach dem Tastendruck notwendig sein, ähnlich wie kbhit() unter windows.

    Hat jemand eine Ahnung wie man das realisieren kann?

    Grüße

    Guddy



  • #include <conio.h>

    int c = _getch();

    ich weis aber nicht obs plattformunabhängig ist...



  • Die Funktion kbhit ist reines C und damit unabhäbgig von dem System einsetzbar.



  • berniebutt schrieb:

    Die Funktion kbhit ist reines C und damit unabhäbgig von dem System einsetzbar.

    Jo, genau wie <conio.h> 🙄



  • bool x = true;
    while(x != true)
    

    Tja, was glaubst du was da noch passiert? Genau, nämlich .. nix!
    Denn x ist nie nicht true!
    Damit wird niemals das in der while-Schleife ausgeführt.
    Nimm das ! weg und es sollte passen.
    (Kannst da aber auch gleich schreiben "while( true )")



  • franz schrieb:

    bool x = true;
    while(x != true)
    

    Tja, was glaubst du was da noch passiert? Genau, nämlich .. nix!
    Denn x ist nie nicht true!
    Damit wird niemals das in der while-Schleife ausgeführt.
    Nimm das ! weg und es sollte passen.
    (Kannst da aber auch gleich schreiben "while( true )")

    Sag niemals nie. 😉 (threads und so)

    Und das ! wegnehmen reicht nicht. (OK in dem Fall schon, aber man sollte sich den Unterschied von = und == bewusst sein. ;))


Log in to reply