c++ - 使用 libzip 打开 zip 文件时遇到问题

标签 c++ libzip

我正在尝试使用 LibZip 在 C++ 中打开一个 zip 存档。因为我没有找到任何相关的工作教程,所以我查阅了文档并找到了这段代码:

int err = 0;
zip_t *z = zip_open("file.zip", 0, &err);

zip_stat_t st;
zip_stat_init(&st);
cout << zip_stat(z, "file.zip", 0, &st) << endl;

cout << st.size << endl;

zip_close(z);

问题是,zip_stat 函数返回 -1 而文件大小为零。 err 始终为 0,所以我不知道问题出在哪里。 获取内容的代码如下所示:

char *contents = new char[st.size];

zip_file *f = zip_fopen(z, "file.zip", 0);
zip_fread(f, contents, st.size);
zip_fclose(f);

delete[] contents;

但显然我还不能测试这部分代码。 我正在使用 C++ 14 和 LibZip 1.5.2

最佳答案

zip_stat 不返回有关 zip 文件的信息,而是返回有关 zip 文件中的一个条目的信息。因此,除非您的 file.zip 文件包含另一个也称为 file.zip 的文件,否则您的代码是错误的。

也许你真的是想

cout << zip_stat(z, "data.zip", 0, &st) << endl;

因为您似乎正在尝试解压缩名为 data.zip 的 zip 文件条目。

关于c++ - 使用 libzip 打开 zip 文件时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57432530/

相关文章:

c++ - MFC 7.0 C++ 如何从 CImage 获取 CBitmap

c++ - 压缩包 - 错误 : Error while opening the archive : no error

C++ Libzip + 删除 = 核心转储

c++ - 复数矩阵乘法 Eigen 与 Matlab

c++ - 使用互斥锁正确编写的代码是否仍然易变?

c++ - 在 .pro 文件 QT 中定义带有转义字符的字符串宏

c++ - 如何在 C++ 中为不同的多项式创建 LFSR

c++ - 如何使用 libzip 构建 zip 文件

c++ - 在 Mac 上编译 libzip : Undefined symbols for architecture x86_64