Просто прочитайте, а затем проверьте, что операция чтения прошла успешно:
std::getline(std::cin, str);
if(!std::cin)
{
std::cout << "failure\n";
}
Поскольку сбой может быть вызван рядом причин, вы можете использовать функцию-член eof
, чтобы увидеть, что на самом деле произошло EOF:
std::getline(std::cin, str);
if(!std::cin)
{
if(std::cin.eof())
std::cout << "EOF\n";
else
std::cout << "other failure\n";
}
getline
возвращает поток, чтобы вы могли писать более компактно:
if(!std::getline(std::cin, str))