c ++新手 - 尝试检查输入格式。已经尝试了一切,最终。任何帮助,将不胜感激。我已将问题分解为这个基本案例:
while(1) {
cin >> x;
cout << "asked!" << endl;
cin.ignore(1000, 'n');
}
将导致无限循环的“问!”在第一个无效输入之后(为x输入不是int)。我想处理不正确的输入。以下内容不起作用:
do {
cin.clear();
cin >> x >> y;
if (cin.fail())
{
cout << "Invalid input." << endl;
cin.ignore(numeric_limits<streamsize>::max(), '\n');
}
} while (cin.fail());
答案 0 :(得分:1)
您应该在std::cin.clear()
之前使用std::cin.ignore()
清除流的错误状态,否则将来所有cin
操作都将退出/失败。您还可以更直接地测试std::cin
操作的成功...
do {
if (std::cin >> x >> y) break;
std::cout << "Invalid input, please try again...\n";
std::cin.clear();
std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
} while (true);
答案 1 :(得分:0)
以下工作:
do {
if (cin >> customers >> chairs)
break;
if (cin.fail())
{
cout << "Invalid input." << endl;
cin.clear();
cin.ignore(numeric_limits<streamsize>::max(), '\n');
}
} while (true);
感谢Tony D