相关疑难解决方法(0)

键入字符串时带有cin的无限循环,而数字是预期的

在下面的循环中,如果我们输入字符作为cin输入而不是预期的数字,那么它将进入无限循环.有人可以向我解释为什么会这样吗?

当我们使用时cin,如果输入不是数字,那么有没有办法检测到这一点以避免上述问题?

unsigned long ul_x1, ul_x2;

while (1)
{
  cin >> ul_x1 >> ul_x2;
  cout << "ux_x1 is " << ul_x1 << endl << "ul_x2 is " << ul_x2 << endl;
}
Run Code Online (Sandbox Code Playgroud)

c++ validation cin infinite-loop

21
推荐指数
2
解决办法
2万
查看次数

如何使cin只采取数字

这是代码

double enter_number()
{
  double number;
  while(1)
  {

        cin>>number;
        if(cin.fail())
        {
            cin.clear();
            cin.ignore(numeric_limits<streamsize>::max(), '\n');
            cout << "Invalid input " << endl;
        }
        else
        break;
        cout<<"Try again"<<endl;
  }
  return number;
}
Run Code Online (Sandbox Code Playgroud)

我的问题是,当我输入类似1x的内容时,则将1作为输入,而不会注意到为另一次运行留下的字符.有没有办法让它适用于任何实数,例如1.8?

c++

10
推荐指数
2
解决办法
6万
查看次数

做Loop Loop Endless

当你选择y时,试图找出为什么这将是一个无限循环.当用户选择y或Y时,它不应该离开do while循环吗?

#include <iostream>
using namespace std;

int main()
{
    int choice;


    do {
        cout << "Enter a number. If you would like to quit, press y.";
        cin >> choice;

        if (choice % 2 == 1)
        {
            cout << "Odd \n";
        }
        else
        {
            cout << "Even \n";
        }

    } while (choice != 'y'|| choice != 'Y');


    return 0;
}
Run Code Online (Sandbox Code Playgroud)

c++

1
推荐指数
1
解决办法
121
查看次数

标签 统计

c++ ×3

cin ×1

infinite-loop ×1

validation ×1