ProgrammingThis forum is for all programming questions.
The question does not have to be directly related to Linux and any language is fair game.
Notices
Welcome to LinuxQuestions.org, a friendly and active Linux Community.
You are currently viewing LQ as a guest. By joining our community you will have the ability to post topics, receive our newsletter, use the advanced search, subscribe to threads and access many other special features. Registration is quick, simple and absolutely free. Join our community today!
Note that registered members see fewer ads, and ContentLink is completely disabled once you log in.
If you have any problems with the registration process or your account login, please contact us. If you need to reset your password, click here.
Having a problem logging in? Please visit this page to clear all LQ-related cookies.
Get a virtual cloud desktop with the Linux distro that you want in less than five minutes with Shells! With over 10 pre-installed distros to choose from, the worry-free installation life is here! Whether you are a digital nomad or just looking for flexibility, Shells can put your Linux machine on the device that you want to use.
Exclusive for LQ members, get up to 45% off per month. Click here for more info.
I would like to use gzip from C++ (or C) to gzip a string. If possible, I would like to use zlib.
When I learned that I would have to use zlib to compress and uncompress, I Googled it for a few minutes and then quickly wrote a program to gzip a file and then ungzip it. However, I don't actually have any need to do that. I need to use gzip to compress and uncompress a string, not a file. I couldn't find much good documentation for using gzip on strings. Every example I find works with files.
I should add that when I say a "string," I mean a char[], although if I see an example that applies to C++ strings, one can easily convert back and forth.
When I learned that I would have to use zlib to compress and uncompress, I Googled it for a few minutes and then quickly wrote a program to gzip a file and then ungzip it. However, I don't actually have any need to do that. I need to use gzip to compress and uncompress a string, not a file.
Well you could take your program and remove the file IO parts
You can use zlib's utility functions compress() and uncompress().
For a test I have compared the output of zlib.minigzip and gzip; the first three bytes of the file-headers are the same (1f 8b 08), but gzip also stores the original file name/attributes:
Code:
$ file *.gz
test.x.gz: gzip compressed data, from Unix
test.y.gz: gzip compressed data, was "test.y", from Unix, last modified: Sat May 28 08:40:50 2005
Since gzopen()/gzwrite() work with files, I am not surprised that minigzip creates the same file headers as gzip. The issue is getting zlib calls to do it.
After posting the first message here yesterday, I did come across that link and read the relevant portion. According to that, I would have to use deflate/deflateInit2. If that is what I have to do, I must say that the proper settings of the parameters to deflateInit2() to produce a gzip type header are not well documented. Something about adding 16 to windowsBits. I would really like to see an explicit example of compressing and uncompressing using zlib programmed to duplicate gzip.
LinuxQuestions.org is looking for people interested in writing
Editorials, Articles, Reviews, and more. If you'd like to contribute
content, let us know.