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
,