Использование zlib для std::string и stringstream

Я использую zlib для выкачивания строки на стороне клиента и раздувания на стороне сервера.

Я нашел ссылку, которая делает именно это, используя char буферы: https://gist.github.com/arq5x/5315739

Может кто-нибудь опубликовать простые примеры, используя методы zlib для std::string а также std::stringstream за то же самое?

РЕДАКТИРОВАТЬ: Пожалуйста, не используйте Boost, поскольку я разрабатываю ограниченный API.

2 ответа

Решение

Итак, из документации zlib.h и examples.c, которые поставляются с загруженным zlib, я узнал, что для сжатия вы можете использовать только файлы или буферы char. Итак, конвертируем строку или поток строк в буферы символов.

Вот код: https://panthema.net/2007/0328-ZLibString.html

Я нашел в Интернете пример, который очень полезен, который работает для меня:

блог: сжатие данных моделирования с использованием ZLib

В основном, используя gzwrite и gzread для записи и чтения, точно так же, как и для записи обычных файлов. При записи сначала укажите размер строки, а затем введите строку. Тот же порядок для чтения. При чтении сначала читайте в std::string obj, а затем вы можете преобразовать строку obj в istringstream:

std::istringstream in(data);  // data is std::string type, using the same notation as in the blog

Для записи также может быть более гибким преобразование ostringstream obj в std:: string obj для переноса в качестве функции.

Другие вопросы по тегам