【发布时间】:2014-07-19 13:53:07
【问题描述】:
一段时间以来,我一直在(在互联网上、书本上、任何地方)寻找解决问题的方法,但似乎找不到。我认为有很多关于这个主题的帖子,我只是没有找到我认为合适的帖子,而且我想我永远不会,所以我要自己问。
在我正在编写的程序的某个时刻,我需要以正整数形式获取用户输入。当用户输入不同于整数(或负整数)的内容时,程序将响应“无效输入。”。当用户输入正确的整数时,它会继续做它必须做的事情(在这种情况下,它会“计算”输入)。这一切都很顺利,但是当用户输入时出现问题:
“1a”(数字与字符组合),它只会识别“1”;
“1 2”(数字空格数),它只会识别“1”;
“1,2”(数字逗号/点号),它只会识别“1”;
我想在所有情况下都得到“无效输入”。- 输出。
我将发布我的代码的简化版本,向您展示我到目前为止所获得的内容,并询问你们是否可以为我提供解决此问题的方法。
提前致谢!
#include <iostream>
using namespace std;
int main()
{
int input;
cout << "Enter a number higher than 0: ";
cin >> input;
while (cin.fail() || input < 1)
{
cout << "Invalid input.\nPlease enter a (positive integer) number higher than 0: ";
cin.clear();
cin.ignore(numeric_limits<streamsize>::max(), '\n');
cin >> input;
}
cout << "Your input is: " << input << endl;
return 0;
}
【问题讨论】:
-
如果你用
cin whole linegoogle,你可能会得到一些提示。这可能是 Stackoverflow 中的重复问题。 -
可能不是重复的:在阅读了整行输入之后,问题仍然是如何最好地解析该行以确定它是否包含无关文本(这被归类为输入错误)。