Ich habe etwas lesen, und ich sehe, dass ich getch() verwenden kann, um einen Tastendruck zu erhalten. Was ich gesehen habe ist, dass dies als schlechte Praxis angesehen wird, jedoch habe ich widersprüchliche Meinungen gesehen. Ich schreibe eine Konsolenanwendung für meine Klasse und möchte basierend auf den gedrückten Pfeiltasten eine Markierung (*) um den Bildschirm bewegen können. Ist getch() der richtige Weg, oder gibt es eine bessere Methode, um es zu erfassen? Ich möchte, dass sie nur den Pfeil drücken können, nicht drücken müssen oder irgendetwas drücken. Ich brauche den Code nicht speziell, ich möchte nur wissen, ob ich getch() vermeiden sollte, und wenn ja, welche Funktionen gibt es für diese Art von Idee.Erfassen eines Tastendrucks in C++
Antwort
getch()
ist keine Standardfunktion in C oder C++. Es ist in einigen veralteten Compilern, wie Turbo C gefunden und es ist auch in bestimmten häufig verwendeten Bibliotheken wie definiert, aber in jedem Fall ist es eine C-Funktion, nicht C++. Für C++ sollten Sie wahrscheinlich nur mit Standard-C++ I/O bleiben. Wenn Sie dies aus irgendeinem Grund nicht tun können, dann gehen Sie für die tragbarste Option, z. Flüche.
gibt es s C++ Standard-Art, Tastenanschläge zu erfassen, wie sie eingegeben werden, oder benötigt C++ immer die Eingabe, um gepuffert werden? – Bear
@Bear: Nein gibt es keinen solchen Weg in Standard-C++ – smerlin
Ich denke, jede Lösung wird entweder Betriebssystem-spezifisch sein, oder wird eine Bibliothek wie Flüche oder Ncurses benötigen. –
Sie möchten vom Terminal im nicht-kanonischen Modus lesen. Verwenden Sie tcsetattr(), um das ICANON-Flag zu deaktivieren.
was ich gesucht habe danke! –
Verwenden Sie getch(), wenn es funktioniert. Warum nicht?
Unter Windows können Sie pdcurses verwenden: http://pdcurses.sourceforge.net/, die mit Ncurses kompatibel ist.
Welches Betriebssystem? –