The following code example is taken from the book
Object-Oriented Programming in C++
by Nicolai M. Josuttis, Wiley, 2002
© Copyright Nicolai M. Josuttis 2002
while (! (std::cin >> x)) {
char c;
if (std::cin.bad()) {
// fatal input error: exit program
std::cerr << "fatal error during intput of fraction"
<< std::endl;
std::exit(EXIT_FAILURE);
}
if (std::cin.eof()) {
// end of file: exit program
std::cerr << "EOF with input of fraction" << std::endl;
std::exit(EXIT_FAILURE);
}
/* non-fatal error:
* - reset failbit
* - read everything up to the end of the line and try again (loops!)
*/
std::cin.clear();
while (std::cin.get(c) && c != '\n') {
}
std::cerr << "Error during input of fraction, try again: "
<< std::endl;
}