C 11 – 从流中删除输入

当我有一个程序可能需要多达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.

点赞