Gibt es eine Funktion, die ein Eingabeaufforderungs-Programm wie system("pause")
warten lässt und nur nach dem Akzeptieren eines bestimmten Schlüssels weiterläuft?C++ - Programm anhalten, bis eine bestimmte Taste gedrückt wird
Antwort
Wenn Sie auf einen Newline-Charakter warten, gibt es eine einfache und portable Möglichkeit, dies zu tun. Verwenden Sie einfach getline
.
Wenn Sie andere Zeichen empfangen möchten, ohne zuerst einen Zeilenumbruch zu erhalten, sind die Dinge weniger portabel. In Unix-Systemen müssen Sie Ihr Terminal auf "Rohmodus" einstellen. Wie George's Kommentar erwähnt, ist Ncurses eine einfache Möglichkeit, dies zu tun, und es bietet praktische Funktionen zum Zeichnen von Dingen an einem bestimmten Ort im Terminal, Empfangen beliebiger Tasten, etc.
Unter Windows müssen Sie seine verwenden console interface. Dies ist natürlich außerhalb von Windows nicht verwendbar.
Wie Neil Butterworth kommentiert, gibt es auch eine Version von Curses, die für Windows funktioniert, genannt PDCurses. Wenn Sie Software schreiben müssen, die sowohl für Unix als auch für Windows funktioniert, ist das eine gute Option.
Flüche ist auch unter Windows verfügbar - http://pdcurses.sourceforge.net/ –
Wenn getline und ncurses nicht für Sie arbeiten, gibt es immer conio.h und getch(). Es gibt einige Probleme damit, wie in dieser Antwort erklärt Why can't I find <conio.h> on Linux?
Viel Glück.
auf Windows-Konsole Schnittstelle die getche() Funktion wartet auf einen Tastendruck vor der weiteren Ausführung.
Es scheint, dass Sie meine Frage missverstehen. Was ich wissen wollte, ist, wenn es eine Funktion ähnlich getch() gibt, aber nur für einen bestimmten Schlüssel funktioniert. – Twilight053
Wenn Sie unter Windows arbeiten, können Sie kbhit() verwenden, das Teil der Microsoft-Laufzeitbibliothek ist. Wenn Sie auf Linux sind, können Sie kbhit so
#include <stdio.h>
#include <termios.h>
#include <unistd.h>
#include <fcntl.h>
int kbhit(void)
{
struct termios oldt, newt;
int ch;
int oldf;
tcgetattr(STDIN_FILENO, &oldt);
newt = oldt;
newt.c_lflag &= ~(ICANON | ECHO);
tcsetattr(STDIN_FILENO, TCSANOW, &newt);
oldf = fcntl(STDIN_FILENO, F_GETFL, 0);
fcntl(STDIN_FILENO, F_SETFL, oldf | O_NONBLOCK);
ch = getchar();
tcsetattr(STDIN_FILENO, TCSANOW, &oldt);
fcntl(STDIN_FILENO, F_SETFL, oldf);
if(ch != EOF)
{
ungetc(ch, stdin);
return 1;
}
return 0;
}
Kompilieren Schritte implementieren:
gcc -o kbhit kbhit.c
Sobald er ausgeführt wird mit
./kbhit
Es fordert Sie auf einen Tastendruck, und wird beendet, wenn Sie Drücken Sie eine Taste (nicht beschränkt auf Eingabe oder druckbare Tasten).
(Got über das Internet - Sie können Code ändern und bestimmte ch Wert wie \ n verwenden für Enter-Taste)
- 1. Endlosschleife bis Taste gedrückt
- 2. Golang Schleife bis Taste gedrückt
- 3. Druckausgabe, bis die Taste gedrückt wird
- 4. Laufender Code, bis die Taste gedrückt wird
- 5. Raspberry Pi Python eine Schleife Sequenz anhalten, wenn Taste gedrückt
- 6. setBackgroundDrawable funktioniert korrekt; bis eine andere Taste gedrückt wird, warum?
- 7. C++ - Programm in Visual Studio-Debugger anhalten
- 8. Script schließt, wenn eine Taste gedrückt wird
- 9. sfml - warte, bis die Taste nicht mehr gedrückt wird
- 10. Ionic Alert: Warten bis die Taste gedrückt wird
- 11. Überprüfen, ob eine Taste in der Konsolenanwendung gedrückt wird C#
- 12. Unerwünschter Signalton, wenn eine Taste gedrückt wird
- 13. Lesen, wenn eine Taste gedrückt wird Java
- 14. Überprüfen, ob die ALT-Taste gedrückt wird
- 15. Objective C schließen Tastatur, wenn Return-Taste gedrückt wird
- 16. C: Lesen von stdin, bis Enter zweimal gedrückt wird
- 17. Ändern Sie die Taste gedrückt mit C#
- 18. Maus simulieren, wenn die Taste gedrückt wird
- 19. Wie wird ein Ton wiedergegeben, wenn eine bestimmte Taste gedrückt wird?
- 20. Wie erhält man einen Code, der ausgeführt wird, wenn eine bestimmte Taste gedrückt wird? (python)
- 21. Wie erkennt man den Status der Umschalttaste, wenn eine Taste in C gedrückt wird?
- 22. ASM: Prüfe, ob keine Taste gedrückt wird
- 23. Ausführung anhalten, bis Websocket eine Verbindung herstellt
- 24. Wie wird eine Taste hervorgehoben, wenn gedrückt wird?
- 25. Wenn eine Taste gedrückt wird oder die Taste JQuery Enter gedrückt
- 26. Schwemme - eine Taste gedrückt halten
- 27. Wie kann ich den MediaPlayer anhalten, wenn die Home-Taste gedrückt wird?
- 28. Socket akzeptieren() blockiert, bis ich eine Taste
- 29. Hide div mit Javascript, bis eine Schaltfläche gedrückt wird
- 30. Schaltfläche aktivieren, wenn die Taste gedrückt wird C# Universal App
Sie vielleicht einen Blick auf [ncurses] nehmen wollen (https://www.gnu.org/ software/ncurses /) – George
Meinen Sie, als würden Sie Code für Zeile durchgehen? – ArmenB
Nicht in der C++ - Standardbibliothek. –