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
か? 標準ライブラリにない場合は、おそらくブーストで?