Если бы я хотел read ()
содержимое 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
находится в конце потока, я делаю это:
bool at_eof( std::istream &is )
{
return available( is ) == 0;
}
Мой вопрос:
Есть ли лучший способ получить количество доступных байтов из istream
? Если не в стандартной библиотеке, возможно, в ускорении?