Ho un sacco di classi C++ che leggono i dati da un flusso di file. Le funzioni assomiglia a questo.Conversione di file C++ per utilizzare lo stringstream
bool LoadFromFile(class ifstream &file);
Sto creando una nuova funzione da leggere dalla memoria anziché da un file. Così ho cercato su Google e un istringstream sembra fare il trucco senza alcuna modifica al codice.
bool LoadFromData(class istringstream &file);
Ora la mia domanda è. Ho bisogno di costruire questo flusso per leggere da un array di caratteri. La stringa non è terminata da null, è puro dati binari e ho ottenuto un intero con la dimensione. Ho provato ad assegnarlo a una stringa e creare uno stream da una stringa, tuttavia la stringa termina dopo un carattere nullo .. e i dati vengono copiati.
int size;
char *data;
string s = *data;
Come si crea una stringa da un puntatore char senza copiare i dati + specificando la dimensione dei dati puntatore? Conosci qualche altra soluzione oltre a un stringente?
quindi, un chiarimento: è il tuo problema che il vostro 'char *' non è terminato nulla e quindi hai problemi a costruire una std :: STRING' 'fuori di esso? – quasiverse
Sì, questo è fondamentalmente il problema. Mi sto anche chiedendo se qualcuno conosce una soluzione migliore. – Tito
Ecco forse la soluzione: http://stackoverflow.com/questions/2079912/simpler-way-to-create-ac-memorystream-from-char-size-t-without-copying-th (una versione utilizza boost, su copia i dati e uno funziona solo con gcc) –