当我的程序可能需要 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对于 std::basic_istream::ignore
。
关于C++11 - 从流中删除输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32907675/