Итак, я пытался получить действительный целочисленный ввод из cin и использовал ответ на этот question.
Рекомендуется:
#include <Windows.h> // includes WinDef.h which defines min() max()
#include <iostream>
using std::cin;
using std::cout;
void Foo()
{
int delay = 0;
do
{
if(cin.fail())
{
cin.clear();
cin.ignore(std::numeric_limits<std::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<std::streamsize>::max(), '\n');
}
cout << "Enter number of seconds between submissions: ";
} while(!(cin >> delay) || delay == 0);
Чтобы заставить его работать. Это довольно уродливо; есть ли лучший способ обойти эту проблему? Может быть, я должен хранить определение max
и переопределять его после?