2009-10-13 20 views
6

sto leggendo in un file binario tramite la solita sintassi C++/STL/iostream. sto copiando l'intero contenuto in un char array dinamicamente assegnato e questo funziona fino ad ora.memorystream - stringstream, stringa, altri?

ma dato che io voglio servire parti del contenuto come linee ad un'altra parte del programma, penso che sarebbe meglio/più facile da attaccare ai flussi perché io non voglio hack in giro con le funzioni CString e puntatori.

la mia domanda ora è, come posso memorizzare la lettura in memoria. in uno stringstream? o in una stringa? che si adatta meglio? ci sono vantaggi o svantaggi di uno rispetto all'altro?

grazie in anticipo!

+0

ok, la copia è facile dopo aver letto questo http://stackoverflow.com/questions/132358/how-to-read-file-content-into-istringstream questo (se è vero) afferma anche che i tracciamenti interni il buffer è una stringa (da qui il nome che indovino). come posso riservare i byte per questo buffer - non ho visto alcuna nota su quello nel ctor o qualcosa su una funzione di riserva ... – didito

risposta

4

Se si desidera leggere da esso come un flusso, si potrebbe anche leggere direttamente dal file alla stringstream:

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

che legge l'intero contenuto del 'file_input' in 'di dati'. Puoi leggere i dati da lì come faresti con qualsiasi altro stream.

+0

grazie, già capito. la domanda è ora è saggio memorizzare un stringstream come una sorta di buffer di memoria/char nella mia classe? o dovrei usare una stringa? – didito

+0

e che dire di std :: stringbuf? – didito

+0

Mancando di un motivo specifico per fare altrimenti, mi limiterei a memorizzare lo stringstream. –