Tengo un montón de clases de C++ que lee datos de una secuencia de archivos. Las funciones se ven así.C++ convertir la función de secuencia de archivos para utilizar un stringstream
bool LoadFromFile(class ifstream &file);
Estoy creando una nueva función para leer de la memoria en lugar de un archivo. Así que busqué en Google y una secuencia de comandos parece hacer el truco sin modificaciones al código.
bool LoadFromData(class istringstream &file);
Ahora mi pregunta es. Necesito construir esta secuencia para leer desde una matriz de caracteres. La cadena no tiene terminación nula, son datos binarios puros y obtuve un número entero con el tamaño. Intenté asignarlo a una cadena y crear una secuencia a partir de una cadena, sin embargo, la cadena termina después de un carácter nulo ... y los datos se copian.
int size;
char *data;
string s = *data;
¿Cómo se crea una cadena de un puntero de matriz de caracteres sin copiar los datos + especificando el tamaño de los datos de puntero? ¿Conoces alguna otra solución que un stringstream?
por lo tanto, la aclaración: ¿su problema es que su '' char * no termine con un nulo y por lo tanto tiene problemas para la construcción de una 'std :: string' fuera de él? – quasiverse
Sí, ese es el problema básicamente. También me pregunto si alguien conoce una mejor solución. – Tito
Aquí está la solución: http://stackoverflow.com/questions/2079912/simpler-way-to-create-ac-memorystream-from-char-size-t-without-copying-th (una versión usa boost, en copias los datos y uno solo funciona con gcc) –