How do I read / write gzipped files in C++?
The iostream wrapper classes here look good, and here is a simple usage example:
gz::igzstream in(filename); std::string line; while(std::getline(in, line)){ std::cout << line << std::endl; }
But I wasn’t able to actually link it (although I have a /usr/lib/libz.a). A simple
g++ test-gzstream.cpp -lz
didn’t do it (undefined reference to gz::gzstreambase::~gzstreambase()).
Obviously you need the cpp-file where the gzstreambase destructor is defined as well, i.e. gzstream.cpp (that’s the link fault). libz is just a c-api for gzip, it knows nothing of c++ stdlib streams.
Boost’s iostream lib has gzip and bzip2 streams too.
EDIT: Updated the link to point to the latest version of the code that includes a major bug fix.