Wie lese / schreibe ich gezippte Dateien in C ++?
Die iostream
-Wrapper-Klassen sehen hier gut aus und hier ist ein einfaches Anwendungsbeispiel:
Aber ich konnte es nicht verbinden (obwohl ich ein /usr/lib/libz.a
habe). Ein einfaches
hat es nicht gemacht ( undefined reference to gz::gzstreambase::~gzstreambase()
).
Offensichtlich brauchst du die cpp-Datei, in der auch der gzstreambase-Destruktor definiert ist, also gzstream.cpp (das ist der Verbindungsfehler). libz ist nur eine c-api für gzip, es kennt nichts von c ++ stdlib streams.
Boosts iostream lib hat auch gzip und bzip2 Streams.
BEARBEITEN: Der Link wurde aktualisiert, um auf die neueste Version des Codes zu verweisen, der einen größeren Bugfix enthält.
Ziehen Sie die Verwendung der Boost-Zip-Filter in Betracht. Ihnen zufolge unterstützt es bzip
, gzip
und zlib
Format.
Um mehr Details zu geben als das, was die anderen Benutzer kurz erwähnt haben, habe ich es geschafft, mit gzstream
auf meinem Computer zu arbeiten.
Zuerst habe ich gzstream
heruntergeladen und in meinem Haus installiert (die beiden letzten Zeilen können zu deinem ~/.bash_profile
hinzugefügt werden):
Dann habe ich die Installation getestet:
%Vor%Schließlich schrieb ich ein Dummy-Programm, um zu überprüfen, ob ich die Bibliothek effektiv nutzen konnte:
%Vor%Hier ist der Code (sehr minimalistisch, sollte für echte Anwendungen viel verbessert werden!):
%Vor%Hier ist, wie ich es zusammengestellt habe:
%Vor%Und last but not least, hier ist, wie ich es benutzt habe:
%Vor%Ich hatte dieses Problem auch mit dem alten GCC-Compiler. Ich habe das gerade behoben, indem ich eine Header-Version von gzstream gemacht habe, die einfacher zu benutzen sein sollte.
Dies ist von der "Gzstream Library Home Page"
Kompilieren Sie gzstream.C entweder von Hand, Lege es in eine Bibliothek und bewege dich gzstream.h in die Include-Suche Pfad Ihres Compilers. Oder benutze die Makefile zur Verfügung gestellt, passen Sie es an Variablen und folgen Sie den Bemerkungen in das Makefile.
Tags und Links c++ zlib gzip gzipstream