【发布时间】:2015-06-08 06:05:00
【问题描述】:
我已经搜索过这个答案,但似乎没有人知道如何解决这个错误。我希望输入严格地是一个 int。如果输入是双精度,我希望它发送错误。
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())”
-
cout en.cppreference.com/w/cpp/io/manip/endl
标签: c++ int double invalid-characters