Tôi có thể truyền dữ liệu từ số fstream
(tệp) đến stringstream
(luồng trong bộ nhớ) không?Sao chép dữ liệu từ fstream đến stringstream mà không có bộ đệm?
Hiện tại, tôi đang sử dụng bộ đệm, nhưng điều này đòi hỏi gấp đôi bộ nhớ, vì bạn cần sao chép dữ liệu vào bộ đệm, sau đó sao chép bộ đệm vào chuỗi và cho đến khi bạn xóa bộ đệm, dữ liệu được sao chép trong bộ nhớ.
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;`
Có ai biết cách tôi có thể viết toàn bộ tệp vào chuỗi mà không sử dụng bộ đệm đệm giữa không?
điểm là gì? Bạn đang cố gắng cải thiện thông lượng? Bạn có thể sẽ cần phải mương 'fstream' trong trường hợp đó, iostreams là SLOW. Bạn đang cố giảm dung lượng bộ nhớ của mình? Đọc tập tin theo khối thay vì tất cả cùng một lúc có thể giúp với điều đó. –