Я не верю, что это оптимально, просто потому, что построение std :: string может привести к копированию всего буфера. Однако использование istringstream выглядит нормально.
Чтобы получить напрямую из буфера, вы можете сделать что-то вроде этого:
int bufferPos = 0;
char getFromBuffer ()
{
if (bufferPos < bufferSize)
{
return buffer[bufferPos++];
}
else
{
return 0;
}
}
Возможно, вы захотите использовать лучший интерфейс для этого. Возможно, есть лучший способ создать istringstream с помощью char *, но я не видел его при быстром просмотре документов.