Распаковка файла на диск с использованием libzip

Я пытаюсь распаковать исполняемый файл, используя c ++ и библиотеку libzip. Начиная с ответа Родриго на похожий вопрос, я прихожу к этому примеру кода:

#include <zip.h>
int main()
{
//Open the ZIP archive
int err = 0;
zip *z = zip_open("foo.zip", 0, &err);

//Search for the file of given name
const char *name = "file.txt";
struct zip_stat st;
zip_stat_init(&st);
zip_stat(z, name, 0, &st);

//Alloc memory for its uncompressed contents
char *contents = new char[st.size];

//Read the compressed file
zip_file *f = zip_fopen(z, "file.txt", 0);
zip_fread(f, contents, st.size);
zip_fclose(f);

//And close the archive
zip_close(z);
}

Исходя из того, что я понимаю, этот код работает, чтобы распаковать файл, но я не знаю, как записать этот файл на диск, так же, как при извлечении файла zip, используя такой инструмент, как winzip. Хранение разархивированных данных в памяти мне не помогает, но я не смог понять, как на самом деле получить файлы на диск.

0

Решение

Примерно так должно это сделать:

if(!std::ofstream("file1.txt").write(contents, st.size))
{
std::cerr << "Error writing file" << '\n';
return EXIT_FAILURE;
}

Уважать станд :: ofstream.

Конечно, вы должны проверить все свои zip Файловые функции, чтобы увидеть, если они вернули ошибки, прежде чем продолжить.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]