У меня есть данные в массиве,
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 .
Но я не хочу использовать для этого временный файл, поскольку он замедляет весь процесс.
Есть ли какой-либо прямой метод сжатия этих данных без использования какого-либо промежуточного файла?
Вы можете использовать фильтрацию streambuf
для этого на лету. Это довольно легко сделать, но Boost :: Iostreams уже сделал для вас.