cin - Ein Zeichen lesen
-
Hallo,
ich möchte wissen wie ich in einer Konsolenanwendung ein einzelnes Zeichen einlesen kann (Möchte eine Menüauswahl realisieren). Der Benutzer soll eine Eingabe machen, wobei er nur ein Zeichen eingeben soll. In C ha´b ich so etwas mit getch() gemacht.char c; if ((c = getch()) != '\n') { printf("\n"); }
Wenn ich das mit cin.get() mache, und das ganze in einer Schleife, dann wird die Schleife so oft durchlaufen, bis im Eingabepeffe nichts mehr steht, und dass möchte ich nicht. Ich möchte das das Einlesen nach der Eingabe von genau einem Zeichen unterbrochen wird.
Also....
- wie lese ich ein Zeichen ein?
- wie lösche ich den Eingabepuffer?
Hier meine Schleife in C++:
do { /*clrscr();*/ m_Title.Create(); // Menü ausgeben CMyString * pItem = NULL; LISTSTR::const_iterator pIt = m_List.begin(); for (ULONG n = 1; n <= m_List.size(); n++) { cout.width(45); pItem = *pIt; cout << *pItem << " (" << n << ")" << endl << endl; pIt++; } cout << endl << "Ihre Wahle: "; chChoise = cin.get(); } while ((chChoise < '1') || (chChoise > (m_List.size() + 47)));
-
Genauso wie bei cout nur umgedeht.
cin>>c;
dann fragst du nur das erste zeichen ab
c[0];Das sollte ohne Probleme gehn.
-
cin und Einleseoperator bewirkt genau das gleiche, die Schleife wird solange wiederholt, bis in Eingabepuffer leer ist, also durchaus auch eine Zeichenkette
Außerdem wird das Einlesen solange nicht unterbrochen, bis man Return eingibt.
-
do { chChoise = getch(); } while ((chChoise < '1') || (chChoise > (m_List.size() + 47)));
Mit dieser Schleife erlaube ich nur die Eingabe von Zahlen, die in einem Bestimmten berreich liegen (zwischen 1 und x), so wie man es aus GUI kennt. Genau das möchte ich aber objektorientiert erreichen, und nicht mit C.
-
Leute, kennt denn keiner eine Lösung ???
-
Bleib bei getch.
-
char ch; cin.get(ch);
-
Schade dass C++ so etwas nicht kann, dann muss ich wohl doch bei getch() bleiben.
Danke
-
C kann das auch nicht. getch() ist eine compilerspezifische Erweiterung einiger Compiler, die sich aus einem C++ Programm genauso gut oder schlecht ansprechen läßt wie aus einem C Programm.