因此,我试图从cin获取有效的整数输入,并使用了该问题的答案。
它建议:
#include // includes WinDef.h which defines min() max()
#include
using std::cin;
using std::cout;
void Foo()
{
int delay = 0;
do
{
if(cin.fail())
{
cin.clear();
cin.ignore(std::numeric_limits<:streamsize>::max(), '\n');
}
cout << "Enter number of seconds between submissions: ";
} while(!(cin >> delay) || delay == 0);
}
这在Windows上给了我一个错误,说max宏并没有那么多参数。 这意味着我必须这样做
do
{
if(cin.fail())
{
cin.clear();
#undef max
cin.ignore(std::numeric_limits<:streamsize>::max(), '\n');
}
cout << "Enter number of seconds between submissions: ";
} while(!(cin >> delay) || delay == 0);
要使其正常工作。 那太丑了。 有没有更好的方法来解决此问题? 也许我应该存储max的定义,然后再重新定义?