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());
您应该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);
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句