Direkte Tastaturabfrage
-
Versuche grade ein Matheprogramm zu schreiben, bis jetzt gibs da auch keine Probleme
. Allerdings bräuchte ich (für eine konfortable Menüführung) einen Befehl der die Tastatur direkt abfragt. Also kein cin, mit dem blinkenden grauen Kästchen, sondern das Programm sollte gleich auf eine Eingabe reagieren (und dann auch Enter, Return, Esc erkennen....). Bitte so einfach wie möglich 
-
getch() ?
-
wie meinst du das "direkt abfragen" ?
-
Such mal nach der Funktion kbhit(), enthalten in <conio.h> (falls dein Compiler diese Datei kennt).
-
Mal ein Beispiel:
#include <conio.h> #include <iostream> using namespace std; int main() { int a; cout<<"Gib 1 ein um Bildschirm zu loeschen"; a = getch(); if(a==1) { system("cls"); cout<<"Bildschirm wurde geloescht"; } cin.clear();//Verhindert nur das das Programm gleich wieder schließt cin.ignore(cin.rdbuf()->in_avail()); cin.get(); }Habe mir das http://www.c-plusplus.net/forum/viewtopic-var-p-is-284396.html schon angeschaut, verstehe aber immer noch nicht wie ich dieses getch() anwenden soll. Das obige Programm wird ausgeführt aber dann kommt wieder das blinkende Kästchen und man sieht was man eingibt. Wenn man was eingibt, egal was, schließt das Programm. Wie sollte das Programm richtigerweise ausschauen ?
-
Hat da niemand eine Idee?
-
Es gibt keine Möglichkeit, dies mit Standard-C++ zu erreichen. Für Posix-Systeme gibt es z.B. die ncurses-Bibliothek, die man auch mit cygwin nutzen kann.
Ich nehme mal stark an, dass du ein Windowsprogramm schreiben willst. Guck dir dazu die Konsolen-Funktionen aus der MSDN an. GetAsyncKeyState kann z.B. benutzt werden, um Tastendrücke asynchron abzufragen.
-
Mittlerweile klappts....habe nur das _kbhit vergessen. Jetzt erkennt mein Programm eine Zahl oder Buchstabe. Was soll ich bei if (zeichen == daneben hinschreiben damit das Programm auch auf Tasten wie Enter oder Esc reagiert ? Ich kann ja nicht schreiben:
int main() { int a=1; while (a==1) { if (_kbhit()) char zeichen =_getch(); if (zeichen == 'Enter') cout<<"Sie haben Enter gedrückt"; } }
-
Schau dir den ASCII Zeichensatz an.
Da steht alles drin.