002
26.10.2003, 20:38 Uhr
virtual
Sexiest Bit alive (Operator)
|
Clear löscht nur das Status bit, nicht jedoch die Zeichen, die eingegeben wurden. Hier würde ich std::cin::ignore verwenden. Oft wird empfohlen, dies mit der avail_in() Funktion vom darunterliegenden Streambuffer zu verknüpfen:
C++: |
#include <iostream>
int main() { int precision; do { if (!std::cin) { std::cin.clear(); std::cin.ignore(std::cin.rdbuf()->in_avail()); } std::cout<<"Iterations: "<<std::flush; std::cin >> precision; } while(std::cin.fail());
return 0; }
|
Leider habe ich die Erfahrung geamcht, daß das oft nicht funktioniert, deshalb kannst Du eher sowas probieren:
C++: |
#include <iostream>
int main() { int precision; do { if (!std::cin) { std::string throw_away; std::cin.clear(); std::getline(std::cin, throw_away); } std::cout<<"Iterations: "<<std::flush; std::cin >> precision; } while(std::cin.fail());
return 0; }
|
-- Gruß, virtual Quote of the Month Ich eß' nur was ein Gesicht hat (Creme 21) |