1

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

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

存档文件数:3
dummy/
dummy/dummy1/
dummy/dummy1/dummytxt

无论我尝试查找其中哪一个的索引,我总是得到“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/”)

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

4

1 回答 1

1

好的,所以我找到了使用 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 结构。在这里,您有一些 zip_stat 结构的文档以及您可以使用它的用途,它似乎非常有用。文档 1文档 2文档 3

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

于 2015-04-05T10:03:11.267 回答