不继续读取用户的输入?

时间:2015-04-26 11:14:18

标签: c++

当我通过输入50000运行此程序时,输出停在633而不是50000,为什么以及如何解决它!??

 int main()
{
     long int n;

     cin>>n; //n = input = 50000 

    double* r = new double[n];


    for(long int i=0;i<n;i++)
    {
        cin>>r[i]; // each value is in range 6 digits 
        cout<<i<<"  "<<r[i]<< endl; //i should stops at 49999
    }

    return 0;
}

1 个答案:

答案 0 :(得分:1)

您没有检查

的结果
cin>>r[i];

因此,在获得无效输入后cin进入失败状态很容易发生。一旦遇到这种情况,在调用cin之前,无法从cin.clear()检索到更多数据。

你应该有一些像

这样的代码
if(!(cin >> r[i])) {
    cout << "Invalid input, please try again" << endl;
    --i;
    cin.clear();
}

来处理这个问题。