检查输入类型失败,C ++

时间:2014-04-23 18:54:05

标签: c++ input types error-handling numbers

我有这个代码,它应该从用户输入除了整数之外的其他东西来愚弄程序。我在网上根据几个来源编写了这段代码,但由于某种原因它没有用。

                int cost;                    
                cin >> cost;

                if (!(cin>>cost)) {
                    cout << "Enter a number: ";
                    cin >> cost;
                    cin.ignore(10000, '\n');
                }

当您输入错误类型时应显示的提示不会出现,程序将终止。我尝试过移动并将cin.ignore()添加到其他地方,我还试过if(cin.fail())但没有成功。

3 个答案:

答案 0 :(得分:3)

执行以下操作:

    int cost;
    cout << "Enter a number: ";                
    if(!(cin >> cost) {
      cin.clear();
      cin.ignore(10000, '\n');
    }

原因:您有一个冗余的cin语句。

答案 1 :(得分:0)

应该像这样工作,

int cost; 
while (!(cin >> cost) 
{  
  cout << "Enter a number:";  
  cin.ignore(10000, '\n');   
}

答案 2 :(得分:0)

你可能会喜欢上面提到的@MatsPetersson和@ 40两个,但我会这样做:

const int MAX_TRIES = 3;
int cost;
cout << "Enter a number: ";
for( int tries = 0; !(cin >> cost) && (tries < MAX_TRIES); ++tries ) {
  cin.clear();
  cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
  cout << "This is not a number, try again: ";
}