So I was trying to get valid integer input from cin, and used an answer to this question.
It recommended:
#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);
}
Which gives me an error on Windows, saying that the max
macro doesn't take that many arguments. Which means I have to do this
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);
To get it to work. That's pretty ugly; is there a better way to work around this issue? Maybe I should be storing the definition of max
and redefining it afterward?
Define the macro NOMINMAX
:
This will suppress the min and max definitions in Windef.h.