gpt4 book ai didi

c++ - 在 C++ 中验证二进制输入

转载 作者:行者123 更新时间:2023-11-28 04:28:03 25 4
gpt4 key购买 nike

您好,我正在尝试验证用户输入以查找 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;
}

如有任何帮助,我们将不胜感激。

最佳答案

代码中的一些问题:

  • 使用 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;
}

关于c++ - 在 C++ 中验证二进制输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53756002/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com