How to reset std::cin when using it?
You could use, when the condition, std::cin.fail() happens: std::cin.clear(); std::cin.ignore(); And then continue with the loop, with a continue; statement. std::cin.clear() clears the error flags, and sets new ones, and std::cin.ignore() effectively ignores them (by extracting and discarding them). Sources: cin.ignore() cin.clear()