Итак, я пытался получить действительный целочисленный ввод от 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::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::max(), '\n');
}
cout << "Enter number of seconds between submissions: ";
} while(!(cin >> delay) || delay == 0);
Чтобы заставить его работать. Это довольно уродливо; есть ли лучший способ обойти эту проблему? Может быть, мне следует сохранить определение max
и переопределить его позже?