Eingabe-Stream richtig säubern
-
char* text = new char[1024]; cin >> text; //sauber machen
Wie kann ich den richtig sauber machen ?
Mit fflush(stdin) ging es nicht, mit cout.flush() auch nicht und cin.flush() gibts nicht.
-
printf("%d streams were flushed.\n", flushall());
Geht auch nicht.
-
cin.clear()
schon mal versucht ?
Devil
-
Danke, aber cin.clear() geht auch nicht.
Also, die Eingabe bei cin ist ja Beendet, wenn man die Enter-Taste drückt.
Aber durch drücken der Entertaste entsteht irgendwie Müll im Eingabe-Stream.
Und den will ich wieder flushen....
-
Hallo,
cin.clear() löscht alle gesetzten Fehlerbits des Streams. Den noch im Puffer stehenden Inhalt ignoriert man mit:cin.ignore(cin.rdbuf()->in_avail());
Oder alternativ:
cin.ignore(numeric_limits<streamsize>::max());
Bei einigen Implementationen hilft auch ein:
cin.sync();
-
Danke.
cin.ignore(cin.rdbuf()->in_avail());
hat mir weitergeholfen.
Schade nur, das er jetzt bei der Eingabe alles ab einem <LEERTASTE> (' ') ignoriert.
Aber das ist nicht so schlimm...
-
fit schrieb:
Danke.
Schade nur, das er jetzt bei der Eingabe alles ab einem <LEERTASTE> (' ') ignoriert.dafuer gibt es cin.getline.