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

libzip function to find index of filename doesn't work c++

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

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

存档中的文件数:3
虚拟/
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/" returns 0,根据zip_get_name是"dummy/")

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

好的,所以我找到了一个使用 zip_stat 结构的 "workaround"。

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;。您可能错过了声明前面的结构。