gpt4 book ai didi

c++ - 如果输入错误则无限循环

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

请看下面的代码

#include <iostream>
#include <iomanip>

using namespace std;

double hypontenuse(double,double);


int main()
{
double side1 = 0;
double side2 = 0;

cout << "Enter side1 (-1 to exit)" << endl;
cin >> side1;

while(true)
{

if(side1==-1)
{
break;
}

cout << "Enter side2" << endl;
cin >> side2;

double result = hypontenuse(side1,side2);

cout << "The Hypontenuse of the Right Triangle is: " << setprecision(2) << fixed << result << endl;


cout << "Enter side1 (-1 to exit)" << endl;
cin >> side1;
}
}

double hypontenuse(double side1, double side2)
{
double result = (side1*side1)+(side2*side2);

return result;
}

我是 C++ 新手。在这段代码中,如果我给出了一个无效的输入(空格、制表符、字母等),这段代码就会突然变成一个无限循环。我需要忽略这些无效输入,显示一条消息,然后回到起始位置。我怎样才能做到这一点?请帮忙!

最佳答案

您始终需要检查您的输入是否成功。通常,这是通过将流转换为 bool 值来完成的:

if (std::cin >> value) {
process(value);
else {
// recover from the error
}

从错误输入中恢复至少包括两部分:

  1. 将流设置回它可以执行任何操作的状态,例如,使用 std::cin.clear()
  2. 摆脱任何有问题的输入。如何做到这一点完全取决于您的需要。例如,您可以忽略单个字符或直到行尾的所有内容。

忽略字符的代码类似于以下代码之一:

std::cin.ignore(); // ignores one character
std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n'); // ignore until end of line

关于c++ - 如果输入错误则无限循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12771213/

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