2 Stimmen

Erfassen eines Tastendrucks in C++

Ich habe etwas gelesen, 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, aber ich habe widersprüchliche Meinungen gesehen. Ich schreibe eine Konsolenanwendung für meine Klasse und möchte in der Lage sein, einen Marker (*) auf dem Bildschirm zu bewegen, wenn die Pfeiltasten gedrückt werden. Ist getch() der richtige Weg, dies zu tun, oder gibt es eine bessere Methode, um es zu erfassen. Ich möchte, dass sie nur den Pfeil drücken können und nicht die Eingabetaste oder etwas anderes drücken müssen. 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.

1voto

Paul R Punkte 201623

getch() ist weder in C noch in C++ eine Standardfunktion. Sie ist in einigen veralteten Compilern zu finden, wie z.B. Turbo C und ist auch in einigen häufig verwendeten Bibliotheken definiert, wie z.B. verflucht aber auf jeden Fall ist es eine C-Funktion, nicht C++. Für C++ sollten Sie wahrscheinlich einfach bei der Standard C++ I/O bleiben. Wenn Sie dies aus irgendeinem Grund nicht tun können, wählen Sie die portabelste Option, z. B. Curses.

1voto

John Gordon Punkte 2456

Sie möchten im nicht-kanonischen Modus vom Terminal lesen. Verwenden Sie tcsetattr(), um das ICANON-Flag zu deaktivieren.

0voto

TonyK Punkte 16193

Verwenden Sie getch(), wenn es funktioniert. Warum nicht?

0voto

Unter Windows können Sie pdcurses verwenden: http://pdcurses.sourceforge.net/ , die mit ncurses kompatibel ist.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X