我已經搜索了這個答案,似乎沒有人知道如何解決這個錯誤。我希望輸入是一個整數。如果輸入是雙精度型,我希望它發送一個錯誤。區分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