Buffer löschen
-
Hallo,
Schon hundert mal behandelt, aber trotz suchen nicht gefunden.
Irgendwie scheint das Suchen noch nicht so gut zu klappen. Aber egal.
Mal zum Problem:
Folgendes ignoriert ja alle Zeichen im Buffer:cin.ignore(cin.rdbuf()->in_avail());
Dann gibt es noch das
cin.clear();
Meine Frage:
Muss das cin.clear() vor oder nach dem cin.ignore stehen. Und dann hab ich noch
gelesen, das bei dem cin.clear() irgend etwas mit einem bestimmten flag passiert.
Könnte mir das vielleicht noch mal jemand näher bringen?
Ich bin ja so wissbegierig
-
template<class T> void WaitForReturn(T& stream) { stream.clear(); stream.ignore(stream.rdbuf()->in_avail()); stream.get(); }
aufruf:
WaitForReturn(cin);
cu
-
Konsolen-FAQ ist dafür immer gut geeignet.
MfG SideWinder
-
also schau mal da:
http://www.c-plusplus.net/forum/viewtopic-var-t-is-39328.htmlcu
-
surfman1 schrieb:
also schau mal da:
http://www.c-plusplus.net/forum/viewtopic-var-t-is-39328.htmlcu
Na das das da steht, hätt ich als letztes vermutet. Ausgerechnet beim Automatischen Schließen. Ist halt oft problematisch, wenn man nicht weiß, wo man suchen muss.
Aber Danke, dass habe ich gebraucht.
-
ich machs immer so:
while(kbhit()) getch(); // solange eine Taste im Buffer lies sie ein // jetzt ist der Buffer leer getch(); // lies noch ein Zeichen;)
ich finde, sieht am schönsten aus und ist leicht zu merken...
-
kbhit()/getch() kommt aber aus der conio.h und die ist nicht bei jedem Compiler dabei.
-
PuppetMaster2k schrieb:
kbhit()/getch() kommt aber aus der conio.h und die ist nicht bei jedem Compiler dabei.
aber weist du ob er nicht zufällig ein compiler mit conio.h hat?
(z.B. BCB)
Ich finde man muss nicht immer alles compilerunabhängig machen und vollständigkeitshalber gehört es dazu, auch wenn wir im standard c++ forum sind
-
Funktionieren tut das sicherlich, aber ich versuche C und C++ -Funktionen etwas getrennt zu halten, also nicht soviel misch-masch zu machen. kbhit verwende ich aber auch ab und zu mal *g*