我是相当新的编程,我试图筛选从输入cin
(无特殊原因,它是唯一的输入法我现在知道的),使得人们只能进入1-10,并得到了“正“响应。 这里是我的代码:
#pragma region Check cin is a valid input (an integer between 1 and 10, not a string or number out of range)
int input;
bool valid2=false;
while (!valid2)
{
cout << "Enter an integer (1-10): ";
cin >> input;
if (!cin || input > 10 || input < 1)
{
cout << "Error: Invalid. Try again." << endl << endl;
cin.ignore(numeric_limits<streamsize>::max());
cin.clear();
}
else
{
valid2 = true;
}
}
#pragma endregion
忽略“编译”,我有每个小实验块一个测试脚本给我节省时间,这是我多么崩溃他们时,他们不再有效。
我(等等)问题是,当我进入一个非整数,如f
,它具有无限循环"Error: Invalid. Try Again"
,我想不通为什么。 我想,也许因为input
变得定义,有人跑过cin
当谈到回到我的身边。 但我查了一个孤立的例子,和cin
让我特别重新input
,然后再继续。
边栏:说到pragma
,没有任何人有这个在C ++更好的方法? 除了使个人的方法,因为大多数我的测试中可以只内运行main
。
编辑:我已经关掉cin.ignore(...)
和cin.clear()
现在该程序可以正确地过滤输入; 但是现在,它不回送的。 给我后"Error: Invalid. Try again."
,它挂在它应该再问我进入整数。