Eingabepuffer löschen?

Hallo Tutorialisten,
soweit ich das verstanden habe, lösche ich den Eingabepuffer so:

Code:
basic_streambuf<char> *buffer = cin.rdbuf();
buffer->in_avail();

oder so:

Code:
cin.clear();
cin.ignore(cin.rdbuf()->in_avail());

sagt mir jemand den unterschied bzw. weitere Optionen ?

Grüße, random.
 
Also das erste sollte ihn dir nicht löschen :D
Und das zweite sollte prinzipiel so viele Zeichen löschen, wie im Buffer sind bzw, bis das nächste Delimer-Zeichen gefunden wurde. Fakt ist jedoch, dass die in_avail-Funktion oft nicht so implementiert ist.

=>
C++:
std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
löscht dir auf jedenfall alles was drin ist bis zum nächsten '\n' ... ;)
 
Vielen Dank, devDevil.

Aber irgendwie erwartet er jetzt von mir genau an der stelle wo eigentlich der Puffer gelöscht werden sollte eine Eingabe....

Grüße, random.
 
Zuletzt bearbeitet:
okay, ich glaube das was ich suchte hatte ich schon längst gefunden...

am einfachsten kann ich sicherstellen das der Puffer leer ist indem ich das hier schreibe:
C++:
	std::cin.clear();
	std::cin.ignore(std::cin.rdbuf()->in_avail());

Grüße, random.
 
Zurück