これを試して:
#include <sstream>
#include <string>
std::string line;
int n;
if (std::getline(std::cin, line))
{
std::istringstream iss(line);
if (iss >> n >> std::ws && iss.get() == EOF)
{
// success, n is now a valid int
}
}
または、おそらくループ内でより便利に:
for (std::string line; std::getline(std::cin, line); )
{
std::istringstream iss(line);
if (!(iss >> n >> std::ws && iss.get() == EOF))
{
std::cout << "Sorry, did not understand, please try again.";
continue;
}
std::cout << "Thanks. You said: " << n << std::endl;
}