Wie kann ich Lesen / schreiben von Gzip-Dateien in C++?
Wie kann ich Lesen /schreiben von Gzip-Dateien in C++?
Den iostream
wrapper-Klassen hier gut Aussehen, und hier ist ein einfaches Beispiel:
gz::igzstream in(filename);
std::string line;
while(std::getline(in, line)){
std::cout << line << std::endl;
}
Aber ich war nicht in der Lage, wirklich-link (obwohl ich habe eine /usr/lib/libz.a
). Eine einfache
g++ test-gzstream.cpp -lz
nicht (undefined reference to gz::gzstreambase::~gzstreambase()
).
- So müssen Sie igzstream und finden das problem oder jede Lösung, die ok ist?
- LGPL ist keine option für mich, da ich die Entwicklung für iOS, kennen Sie einen nicht-virale alternativen?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Natürlich müssen Sie die cpp-Datei, wo die gzstreambase Destruktor ist als gut definiert, d.h. gzstream.cpp (das ist der link fault). libz ist nur eine c-api für gzip, er weiß nichts von c++ stdlib streams.
Erhöhung der iostream lib hat gzip-und bzip2-streams zu.
EDIT: Aktualisiert den link zu zeigen auf die neueste version des code mit einer großen bug-fix.
Erwägen Sie die Verwendung der Boost-zip-Filter. Nach Ihnen, es unterstützt
bzip
,gzip
undzlib
- format.Geben mehr details als das, was war, kurz erwähnt von den anderen Usern, hier ist, wie ich es geschafft, mit zu arbeiten
gzstream
auf meinem computer.Erste, die ich heruntergeladen habe
gzstream
und installiert es in meinem Haus (die beiden letzten Zeilen können Hinzugefügt werden, um Ihre~/.bash_profile
):Dann, getestet habe ich die installation:
Schließlich schrieb ich ein dummy-Programm, um zu überprüfen, dass könnte ich effektiv nutzen die Bibliothek:
Hier ist der code, den (sehr minimalistischen, sollte stark verbessert werden konkrete Anwendungen!):
Hier ist, wie ich es kompiliert:
Und last but not least, hier ist, wie ich es benutzt habe:
Hatte ich diese Probleme auch mit der alten GCC-compiler. Ich nur behoben, indem wir einen header-only-version von gzstream, das sollte einfacher zu verwenden.
https://gist.github.com/1508048
Dies ist aus der "Gzstream Bibliothek Startseite"