C++11 - отбросить ввод из потока

Когда у меня есть программа, которая может занять до n Строки ввода, чтобы решить проблему, прежде чем начинать со следующей, мне нужно отбросить все строки ввода, которые относятся к старой проблеме, когда программа может решить ее до того, как прочитает весь ввод.

Я мог бы, конечно, просто зацикливаться, пока не достигну ввода новой задачи, но чтение и хранение всех этих данных может быть дорогостоящим. Разве нет способа просто сказать входному потоку игнорировать следующие такие-то-то-многие значения?

1 ответ

Решение
void discardLines(std::istream &in, std::size_t count)
{
    if (!in)  
       return;

    for (auto i = count; i != 0; --i)
         in.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
}

и назвать это с любым istream типа как cin, ifstream а также istringstream,

Ссылка для std::basic_istream::ignore,

Другие вопросы по тегам