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

标签 c++ c++11 io cin

当我的程序可能需要 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

Reference对于 std::basic_istream::ignore

关于C++11 - 从流中删除输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32907675/

相关文章:

c++ - 额外字节在 C++ 中是否初始化为 0?

c++ - C++ 中的 Cstring - 使用标准 C 函数导致段错误

c++ - 使用enable_if在按值传递与按引用传递之间更改函数声明

c++ - 使用 std::random 创建全范围的随机 float

c - 一个简单程序中的奇怪 C 错误(作业)

c++ - 使用boost asio从串口读取最新数据

c++ - 在 Windows 7 上使用 IFileDialog 的问题

c++ - 使用 decltype 时出错

audio - 我要在此代码中添加些什么,以使音频通过Arduino在PC扬声器中播放?

c++ - 在吃 EOF 后重用 std::cin