C++ 新手 - 尝试检查输入格式。什么都试过了,束手无策。任何帮助,将不胜感激。我已经将我的问题分解为这个基本案例:
while(1) {
cin >> x;
cout << "asked!" << endl;
cin.ignore(1000, 'n');
}
会导致无限循环的“问!”在第一个无效输入之后(输入 not int for x)。我想处理不正确的输入。以下将不起作用:
do {
cin.clear();
cin >> x >> y;
if (cin.fail())
{
cout << "Invalid input." << endl;
cin.ignore(numeric_limits<streamsize>::max(), '\n');
}
} while (cin.fail());
最佳答案
您应该在 std::cin.ignore()
之前立即使用 std::cin.clear()
来清除流的错误状态,否则所有 future 的 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);
关于c++ - 检查 cin 输入,清除输入缓冲区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28533483/