用于查找文件名索引的libzip函数并不适用于c ++

时间:2015-04-04 21:51:21

标签: c++ zip archive unzip libzip

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

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

存档中的文件数量:3
虚拟/
虚设/ dummy1 /
虚设/ 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 /")

我将非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

好吧,所以我找到了一个使用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结构的文档以及可以使用它的内容,它看起来非常有用。 Documentation1Documentation2Documentation3

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