gpt4 book ai didi

c++ - 类型检查失败

转载 作者:太空宇宙 更新时间:2023-11-04 13:25:57 25 4
gpt4 key购买 nike

我想制作一个“闰年”程序作为练习。
这是我的代码:

#include <iostream>
#include <string>

int main (){
int year;
std::string flag01;
do {
std::cout << "Input year: ";
std::cin >> year;
//check for int input
while (std::cin.fail()){
std::cout << "Oops..." << std::endl << "I failed to get a year..." << std::endl << "Try again?";
std::cin.clear();
std::cin >> year;
}
if (year % 4 == 0 && year % 100 != 0 && year != 0)
std::cout << "the year " << year << " is a leap year.\n";
else
std::cout << "the year " << year << " is not a leap year.\n";
std::cout << "Would you like to input another? yes / no \n";
do {
std::cin >> flag01;
if (flag01 != "yes" && flag01 != "no")
std::cout << "please only insert yes or no\n";
} while (flag01 != "no" && flag01 != "yes");
} while (flag01 != "no");
return 0;
}

但是我无法使它检查您输入的内容是否为 int 的部分工作。我不知道我做错了什么。
当我运行它并输入 charstring 时,它会进入无限循环并继续打印第 11 行。

我在这里看到了 std::cin.failstd::cin.clear:Checking input value is an integer

请帮忙,谢谢。

最佳答案

您正在清除错误状态,但导致错误的数据仍在流中。用忽略清除它...

    std::cout << "Oops..." << std::endl << "I failed to get a year..." << std::endl << "Try again?";
std::cin.clear();
std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n'); //extract all characters until /n
std::cin >> year;

包括 std::numeric_limits 的 header 限制。

#include <limits>

关于c++ - 类型检查失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33336267/

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