当我有一个程序可能需要多达n行输入来解决问题然后开始下一个,我需要丢弃属于旧问题的所有输入行,当程序可以解决它之前阅读所有输入.
当然,我可以简单地循环,直到我到达新问题的输入,但读取和存储所有数据可能是昂贵的.有没有办法简单地告诉输入流忽略下一个如此多的值?
最佳答案
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.
Reference for std :: basic_istream :: ignore.