我有这个代码,它应该从用户输入除了整数之外的其他东西来愚弄程序。我在网上根据几个来源编写了这段代码,但由于某种原因它没有用。
int cost;
cin >> cost;
if (!(cin>>cost)) {
cout << "Enter a number: ";
cin >> cost;
cin.ignore(10000, '\n');
}
当您输入错误类型时应显示的提示不会出现,程序将终止。我尝试过移动并将cin.ignore()添加到其他地方,我还试过if(cin.fail())
但没有成功。
答案 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: ";
}