C++11 - 从流中删除输入
C++11 - drop input from stream
当我的程序可能需要 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
。
当我的程序可能需要 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
。