读取c ++ istream直到EOF,同时丢弃内容

时间:2018-06-05 12:40:17

标签: c++ std

我有一个std::istream,我需要阅读eof。我对数据的内容不感兴趣,但我必须确保从底层缓冲区中读取所有字节。

eof之前阅读istream内容的最快方法是什么?

类似下面的代码?

std::istream str(buffer);
...
std::NULLORWHAT << str.rdbuf();

1 个答案:

答案 0 :(得分:3)

您可以使用std::istream::ignore()来阅读和放弃流中的所有字符。

ignore()的默认分隔符为EOF,因此您只需要传递一些字符即可读取。如果您使用std::numeric_limits<std::streamsize>::max(),那么ignore()实际上并不会检查它是否达到那么多字符,并且只会读取它直到达到分隔符。

那会给你

str.ignore(std::numeric_limits<std::streamsize>::max());