我有一个std::istream
,我需要阅读eof
。我对数据的内容不感兴趣,但我必须确保从底层缓冲区中读取所有字节。
在eof
之前阅读istream内容的最快方法是什么?
类似下面的代码?
std::istream str(buffer);
...
std::NULLORWHAT << str.rdbuf();
答案 0 :(得分:3)
您可以使用std::istream::ignore()
来阅读和放弃流中的所有字符。
ignore()
的默认分隔符为EOF
,因此您只需要传递一些字符即可读取。如果您使用std::numeric_limits<std::streamsize>::max()
,那么ignore()
实际上并不会检查它是否达到那么多字符,并且只会读取它直到达到分隔符。
那会给你
str.ignore(std::numeric_limits<std::streamsize>::max());