我已经搜索了这个答案,似乎没有人知道如何解决这个错误。我希望输入是一个整数。如果输入是双精度型,我希望它发送一个错误。区分int和double
int creatLegs = 0;
string trash;
bool validLegs = true;
do
{
cout << "How many legs should the creature have? ";
cin >> creatLegs;
if(cin.fail())
{
cin.clear();
cin >> trash; //sets to string, so that cin.ignore() ignores the whole string.
cin.ignore(); //only ignores one character
validLegs = false;
}
if (creatLegs > 0)
{
validLegs = true;
}
if (!validLegs)
{
cout << "Invalid value, try again.\n";
}
} while (!validLegs);
它似乎几乎工作。它发送错误,但只有在移到下一个循环之后。我怎样才能解决这个问题?为什么它仍然显示错误信息,但在显示之前仍然继续?
对不起,我不太明白你的意思。不,它不会将其存储为int。如果我输入的内容不是int,它不知道该怎么做。它吐出垃圾邮件,直到我添加了“if(cin.fail())” – 2015-04-03 06:48:19
cout <<“\ n”不刷新输出缓冲区,而cout << endl。见http://en.cppreference.com/w/cpp/io/manip/endl – amdn 2015-04-03 06:53:14