Yine de fstream
'dan (dosya) stringstream
(bellekteki bir akış) verilerine veri aktarabilir miyim?Veriyi arabellek olmaksızın fstream'den stringstream'e kopyalayın?
Şu anda bir arabellek kullanıyorum, ancak bu bellekte iki katına ihtiyaç duyuyor, çünkü verileri bir arabelleğe kopyalamanız gerekiyor, ardından arabelleği arabelleğe kopyalamanız gerekiyor ve siz arabelleği silinceye kadar, veriler çoğaltıyor hafızada.
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;`
kimse ben bir İnbetween tampon kullanmadan bir stringstream için bütün dosyası yazmak nasıl biliyor mu?
ne anlamı var: Burada
(derlenmiş ve test edilmiş) bir örnek kullanımıdır? Verimi geliştirmeye mi çalışıyorsunuz? Muhtemelen fstream'i fışkırtmak zorunda kalacaksınız, bu durumda iostreams SLOW. Bellek ayak izinizi azaltmaya mı çalışıyorsunuz? Dosyayı bir kerede değil, yığın halinde okumak buna yardımcı olabilir. –