Y at-il de toute façon je peux transférer des données d'un fstream
(un fichier) à un stringstream
(un flux dans la mémoire)?Copier les données de fstream vers stringstream sans buffer?
Actuellement, j'utilise un tampon, mais cela nécessite le double de la mémoire, car vous devez copier les données dans un tampon, puis copier le tampon dans la chaîne, et jusqu'à ce que vous supprimiez le tampon, les données sont dupliquées dans la mémoire.
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;`
Est-ce que quelqu'un sait comment je peux écrire un fichier entier à un stringstream sans utiliser un tampon inbetween?
Quel est le point? Essayez-vous d'améliorer le débit? Vous allez probablement devoir abandonner 'fstream' dans ce cas, les iostreams sont SLOW. Essayez-vous de diminuer votre empreinte mémoire? Lire le fichier en morceaux au lieu de tout en même temps pourrait aider avec cela. –