¿Hay alguna forma de leer un número conocido de bytes, directamente en std :: string, sin crear un búfer temporal para hacerlo?Lectura directamente de std :: istream en std :: string
por ejemplo, actualmente puedo hacerlo por
boost::uint16_t len;
is.read((char*)&len, 2);
char *tmpStr = new char[len];
is.read(tmpStr, len);
std::string str(tmpStr, len);
delete[] tmpStr;
¿Ha pensado en utilizar un vector '' en lugar de 'string'? Si sus datos son más "brutos" que "similares a cadenas", es posible que funcionen mejor para usted y haya menos confusión sobre el acceso directo. (Se requiere que los vectores se almacenen contiguamente, por lo tanto, use '& v [0]'.) –
En su mayor parte, son datos de cadena, solo incrustados en archivos binarios grandes.También solo quiero cambiar las rutinas de carga, no las 1000 líneas de código que luego usan los datos una vez cargados, lo que requeriría un cambio de std :: string. –
Luego verificaría su implementación de cadena específica, y luego usaría la respuesta de GMan, asegúrese de verificar la transmisión después de 'is.read' también. –