2016-05-26 3 views
0

Я совершенно не знаком с zLib, и я смущен тем, как его использовать. Это то, что я пытаюсь сделать с помощью C++, но не записывая на диск, поэтому с помощью буфера или чего-то:zlib Сжатие без записи на диск

Возьмите вектор целых чисел, хранящихся в файле std :: vector, распечатайте все это в текстовом файле с помощью пробелы между каждым элементом. Сжатие с помощью zLib затем сохраните размер этого сжатого файла в байтах до целочисленной переменной, используемой позже для вычисления и т. Д.

Любой помощь ценится, спасибо :)

+1

И ваш вопрос? .. – ForceBru

+0

Как бы это сделать в C++ с использованием zLib –

+0

https://gist.github.com/arq5x/5315739 – RPGillespie

ответ

0

Zlib имеет compress и uncompress функций, которые принимают указатели на входные и выходные буфера (наряду с максимальным размером для каждого).

В вашем случае я бы начал с std::stringstream, чтобы превратить целые числа в текстовую форму (с пробелами между ними). Затем используйте этот поток .str() для извлечения содержимого в виде строки. Используйте строку .c_str(), чтобы получить указатель на содержащиеся в ней данные, которые затем можно передать в compress.

Для адресата требуется указатель на буфер и указатель на длинный int. Он записывает сжатый размер в этот длинный int, так что это значение, которое вы, похоже, хотите сохранить для последующего вычисления и т. Д.

+0

Спасибо большое. функция сжатия была тем, что я искал –

Смежные вопросы