gpt4 book ai didi

c++ - do-while 无限循环与 if c++

转载 作者:太空狗 更新时间:2023-10-29 20:56:05 25 4
gpt4 key购买 nike

在这个循环中,用户应该输入一个 int 并且程序检查它是否奇怪它会转到下一部分,但我不明白为什么如果用户输入一个不是 的字符>int,程序陷入死循环!

int num;
do {
cout << "PLEASE enter the num: ";
cin >> num;
if (num % 2 == 0)
cout << "Number should be odd!" << endl;
else
break;
} while (true);
//...

无论如何 char/int != 0 如果它也是 ==0 它应该在下一个 cin 停止但它不会停止!我也尝试了 ws(cin) 但它对我没有帮助。请告诉我如何解决这个问题,以及为什么会这样。

最佳答案

因为你的程序没有检查cin >> num;的结果。由于 cin >> num;(其中 num 是一个整数)将读取所有可用的数字,如果输入根本不是数字 [并且不是空白字符,被 cin >>] 跳过,然后它不断尝试读取输入。

当用户在您的程序中输入“askjhrgAERY8IWE”时,您的问题并不清楚您到底想做什么 - 我想到了两种解决方案:

Alt 1. 删除错误输入后再次询问。这可能适合此应用程序,因为它是交互式的,但对于从文件读取其输入的自动化程序来说,这是一个糟糕的主意。

if(!(cin >> num))
{
cout << "That deoesn't seem to be a number..." << endl;
cin.clear();
cin.ignore(10000, '\n');
}

Alt 2. 退出并显示错误消息。当典型的输入是数据文件时,这显然是正确的做法。

 if(!(cin >> num))
{
cout << "That deoesn't seem to be a number..." << endl;
exit(1);
}

您还应该在此代码中添加代码来处理文件结尾 - 对于应该可以接受的文件输入 [除非文件具有标记结尾的特定数据]。对于交互式输入(用户直接向程序输入),文件末尾可能会或可能不会被视为错误 - 实际上取决于接下来发生的事情。

关于c++ - do-while 无限循环与 if c++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34410903/

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