C / C ++: сжатие (gz) данных без использования временного файла [duplicate]

0

У меня есть данные в массиве,

uchar *data = "Data to be compressed."; [Some data]

Я хочу сжать (gz) эти данные и получить выходные данные в буфере.

uchar gzData[MAX_LEN];

Один из способов сделать это:

 1. Creating a 'ogzstream' object.
 2. Writing this data into a temporary file
 3. close the temporary file.
 3. Create a 'ifstream' object.
 4. Read the temporary file into buffer using ifstream object .

Но я не хочу использовать для этого временный файл, поскольку он замедляет весь процесс.

Есть ли какой-либо прямой метод сжатия этих данных без использования какого-либо промежуточного файла?

  • 0
    вы понимаете, что то, что вы создаете, - это поток, а не файл? Здесь есть взаимодействие с файловой системой.
Теги:
compression
gzip
zlib

1 ответ

0

Вы можете использовать фильтрацию streambuf для этого на лету. Это довольно легко сделать, но Boost :: Iostreams уже сделал для вас.

  • 0
    Я не знаю, «Boost». :( Можете ли вы выслать мне ссылку на какой-нибудь учебник / пример для того же?
  • 0
    Как насчет std :: stringstream?
Показать ещё 3 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню