Использование 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. Итак, конвертируем строку или поток строк в буферы символов.
Я нашел в Интернете пример, который очень полезен, который работает для меня:
блог: сжатие данных моделирования с использованием 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 для переноса в качестве функции.