Esiste comunque la possibilità di trasferire i dati da un fstream
(un file) a uno stringstream
(uno stream in memoria)?Copia i dati da fstream a stringstream senza buffer?
Attualmente, sto utilizzando un buffer, ma questo richiede il doppio della memoria, perché è necessario copiare i dati in un buffer, quindi copiare il buffer nello stringstream e finché non si elimina il buffer, i dati vengono duplicati nella memoria.
std::fstream fWrite(fName,std::ios::binary | std::ios::in | std::ios::out);
fWrite.seekg(0,std::ios::end); //Seek to the end
int fLen = fWrite.tellg(); //Get length of file
fWrite.seekg(0,std::ios::beg); //Seek back to beginning
char* fileBuffer = new char[fLen];
fWrite.read(fileBuffer,fLen);
Write(fileBuffer,fLen); //This writes the buffer to the stringstream
delete fileBuffer;`
Qualcuno sa come posso scrivere un intero file su un stringstream senza utilizzare un buffer intermedio?
Qual è il punto? Stai cercando di migliorare il rendimento? Probabilmente avrete bisogno di abbandonare "fstream" in quel caso, gli iostreams sono SLOW. Stai cercando di ridurre il tuo impatto sulla memoria? La lettura del file in blocchi invece di tutti in una volta potrebbe essere d'aiuto. –