嗨,我正在尝试验证用户输入以查找1或0的输入。字符串验证部分似乎正常工作,但是任何基于整数的输入都具有控制台窗口接受输入但不跳过if语句的情况。 ,返回输入(maxItems)。这是代码:
int RollingStats::GetOption()
{
int maxItems;
std::cout << "Please enter either to store data individually (0) or as a range(1)" << std::endl;
std::cin >> maxItems;
if ((!(std::cin >> maxItems) && maxItems != 0) | (!(std::cin >> maxItems) && maxItems != 1))
{
std::cin.clear();
std::cin.ignore(100, '\n');
std::cout << "Please enter an input of either 0 or 1" << std::endl;
GetOption();
}
return maxItems;
}
任何帮助将不胜感激。
答案 0 :(得分:1)
代码中的一些问题:
cin
三次(在if
之前一次,在if
条件下两次)将要求用户输入三次||
条件检查中使用逻辑或(|
)而不是按位或(if
)。您可以改为执行以下操作:
int RollingStats::GetOption()
{
int maxItems;
std::cout << "Please enter either to store data individually (0) or as a range(1)" << std::endl;
std::cin >> maxItems;
if(!std::cin.good() || maxItems != 0 && maxItems != 1)
{
std::cin.clear();
std::cin.ignore(100, '\n');
std::cout << "Please enter an input of either 0 or 1" << std::endl;
maxItems = GetOption();
}
return maxItems;
}