2009-10-13 24 views
6

Estoy leyendo en un archivo binario a través de la sintaxis habitual de C++/STL/iostream. estoy copiando todo el contenido en una matriz de caracteres dinámicamente asignada y esto funciona bien hasta el momento.memorystream - stringstream, string, otros?

pero como yo quiero servir a partes del contenido como líneas a otra parte del programa, Creo que sería mejor/más fácil cumplir con las corrientes porque yo no quiero cortar alrededor con funciones de CString y punteros.

mi pregunta ahora es, ¿cómo puedo almacenar la lectura en la memoria. en un stringstream? o en una cadena? que se ajusta mejor? ¿hay ventajas o desventajas de una sobre la otra?

gracias de antemano!

+0

bien, copiar es fácil después de leer este http://stackoverflow.com/questions/132358/how-to-read-file-content-into-istringstream esto (si es verdad) también indica que las cadenas de caracteres internas buffer es una cadena (de ahí el nombre, supongo). ¿Cómo puedo reservar bytes para este búfer? No vi ninguna nota al respecto ni nada sobre una función de reserva ... – didito

Respuesta

4

Si desea leer de él como una corriente, que también podría leer directamente desde el archivo a la stringstream:

std::stringstream data; 
data << input_file.rdbuf(); 

que lee todo el contenido de 'archivo_entrada' en 'datos'. Puede leer los datos desde allí como lo haría con cualquier otra transmisión.

+0

gracias, ya lo tengo. la pregunta ahora es ¿es prudente almacenar un stringstream como un tipo de buffer de memoria/char en mi clase? o debería usar una cadena? – didito

+0

y qué tal std :: stringbuf? – didito

+0

Sin una razón específica para hacer lo contrario, solo almacenaría el stringstream. –