如果我想将read()
a 的内容std::istream
放入缓冲区,我必须先找出有多少可用数据才能知道缓冲区的大小。为了从 istream 中获取可用字节数,我目前正在执行以下操作:
std::streamsize available( std::istream &is )
{
std::streampos pos = is.tellg();
is.seekg( 0, std::ios::end );
std::streamsize len = is.tellg() - pos;
is.seekg( pos );
return len;
}
同样,由于 std::istream::eof() 不是一个非常有用的基金 AFAICT,要找出istream
' 的 get 指针是否在流的末尾,我这样做:
bool at_eof( std::istream &is )
{
return available( is ) == 0;
}
我的问题:
有没有更好的方法从 获取可用字节数istream
?如果不在标准库中,也许在 boost 中?