if (std::cin.fail()) // has a previous extraction failed or overflowed? { // yep, so let's handle the failure std::cin.clear(); // put us back in 'normal' operation mode std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n'); // and remove the bad input }