c++ - 用于查找文件名索引的 libzip 函数不起作用 C++

标签 c++ zip archive unzip libzip

我今天开始学习 libzip 一切都很顺利,只是我无法让 zip_name_locate 工作,而且我找不到任何解释它的教程/示例/文档(虽然文档有,但我找不到让它工作)。 Documentation 1 , Documentation 2 (我无法让其中任何一个工作,文档 2 页面也有一些显然没有在我的范围内声明的枚举)

因此,首先,我的 zip 存档可以正确打开,因为我可以向其中替换和添加文件。我有显示索引路径的终端输出(来自 zip_get_name 函数)。

存档中的文件数:3
虚拟/
假人/假人1/
虚拟/虚拟1/虚拟文本

无论我试图找到其中哪一个的索引,我总是得到“dummy/”的索引,它是 0,我也尝试过所有不同的枚举 (ZIP_FL_COMPRESSED、ZIP_FL_ENCRYPTED、ZIP_FL_NOCASE、ZIP_FL_NODIR、ZIP_FL_RECOMPRESS、ZIP_FL_UNCHANGED 和 0)。

(这个“dummy/dummy1/”返回 0,根据 zip_get_name 是“dummy/”)

如有任何帮助,我将不胜感激。

最佳答案

好吧,我找到了一个使用 zip_stat 结构的“解决方法”。

struct zip_stat stat;
zip_stat_init(&stat);
zip_stat(zipPointer, "dummy/dummy1/dummytxt", 0, &stat);
std::cout << "name= " <<stat.name << ", index= " << stat.index << std::endl;

这将打印“name= dummy/dummy1/dummytxt, index= 2”。您也可以使用“zip_stat_index”来通过索引构建 zip_stat 结构。 Here 你有一些关于 zip_stat 结构的文档以及你可以用它做什么,它看起来非常有用。 Documentation1 , Documentation2 , Documentation3 .

哦,如果你有问题,调试器说 stat 没有在这个范围内声明,确保你这样写:struct zip_stat stat;。您可能错过了声明前面的结构。

关于c++ - 用于查找文件名索引的 libzip 函数不起作用 C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29451777/

相关文章:

c++ - 对齐类型和按值传递参数

Java - 打开包含超过 65535 个文件的 zip 文件

c++ - 我可以直接为指针分配地址吗?如果是这样,该怎么做?

c++ - boost::mpl::tag<T>::type 编译错误

c++ - 在模板中指定允许的参数

macos - Mac OS X 终端 Zip 实用程序不适用于 dSYM 文件

java - 受密码保护的 zip 文件问题

linux - 使用 tar 将多个源目录中的文件收集到一个普通存档中

java - 是否存在用于嵌套存档的有效 java.net.URI?

php - 创建一个 GZipped tar 文件并通过 PHP 动态流式传输它?