c++ 11 -从流中删除输入

C++11 - drop input from stream

本文关键字:删除 输入 c++      更新时间:2023-10-16

当我有一个程序在开始下一个问题之前可能需要多达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类型(如cinifstreamistringstream)来称呼。

std::basic_istream::ignore参考