2009-07-27 6 views
4

Ich suche nach einer Möglichkeit, eine Datei in C++ zu extrahieren, indem Sie die Boost :: Iostreams-Klassen verwenden.extrahiert komprimierte Datei mit boost :: iostreams

Es gibt ein Beispiel in der boost documentation. Aber es gibt den Inhalt der komprimierten Datei an std :: cout aus. Ich suche nach einer Möglichkeit, es in eine Dateistruktur zu extrahieren.

Weiß jemand, wie man das macht?

Danke!

+0

Was meinen Sie mit "einer Dateistruktur"? – jalf

+0

Ich spreche über eine komprimierte Datei, die mehrere andere Dateien und Verzeichnisse enthält. –

Antwort

5

Boost.IOStreams unterstützt keine komprimierten Archive, nur einzelne komprimierte Dateien. Wenn Sie eine ZIP- oder TAR-Datei in eine Verzeichnisstruktur extrahieren möchten, müssen Sie eine andere Bibliothek verwenden.

1

Sieht für mich wie der Aufruf an boost :: iostreams :: copy nimmt einen Ostream als zweiten Parameter. Haben Sie versucht, einen Ofstream mit dem Namen Ihrer Ausgabedatei zu erstellen und diesen zu verwenden?

+0

Jep, schon versucht, dass, erstellt nur eine Datei mit einem Haufen Müll darin, es erstellt keine vollständige Dateistruktur ... –

+0

Was bedeutet "eine vollständige Dateistruktur"? Produziert es tatsächlich die richtige Ausgabe auf cout? Wenn ja, dann sollte es einfach sein, dies zur Arbeit zu bringen ... – bacar

2

Das Beispiel in der Dokumentation zeigt, wie Sie die Datei dekomprimieren und das Ergebnis in einen anderen Stream übertragen.

Wenn Sie möchten, dass die Ausgabe stattdessen an ein In-Memory-Array geleitet wird, können Sie stattdessen einen Stream des Typs verwenden.

Das ist im Grunde ein Stream-Wrapper um ein Array.

Ich bin nicht sicher, was Sie meinen, wenn Sie sagen, dass Sie die Ausgabe in "einer Dateistruktur" wünschen.

1

Wahrscheinlich möchten Sie diese Bibliothek nicht. Vielleicht möchten Sie sich nach anderen umsehen.

z. zziplib

Verwandte Themen