gpt4 book ai didi

C++检查整数变量

转载 作者:搜寻专家 更新时间:2023-10-30 23:58:19 26 4
gpt4 key购买 nike

用户输入日期,目前已验证以确保该值介于 1 和 31 之间(含)。

但是,如果他们输入一个非整数值,它只会在无限循环中不断重复错误消息。

我四处寻找答案,但其他提出问题的人似乎在 C++ 方面比我高级得多,因此我什至不理解他们的初始代码。

这是代码

void Menu::setDate()
{
date = 0;

std::cout << "Please enter todays date: (as an integer) ";
do
{
std::cin >> date;
if (date > 0 && date < 32)
{
break;
}
std::cout << "Error: Please enter todays date: (as an integer) ";
}
while (true);
}

最佳答案

您的代码的问题是当输入无效整数时,流会出错并设置为 failbit。因此,您需要先清除它,然后才能再次使用 I/O 操作。试试这个:

void Menu::setDate()
{
date = 0;

std::cout << "Please enter todays date: (as an integer) ";

while(true){
std::cin >> date;
if(date > 0 && date < 32){
break;
}
else{
std::cout << "Error, please enter today's date (as an integer):" << std::endl;
std::cin.clear();
std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
}
}
}

关于C++检查整数变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20976439/

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