Сегодня я начал изучать libzip, все идет отлично, просто я не могу заставить zip_name_locate работать, и я не могу найти какие-либо учебные пособия / примеры / документацию, которые это объясняют (хорошо, что документация делает, но я не могу получить ее Работа). Документация 1, Документация 2 (Я не могу заставить что-либо из этого работать, на странице Documentation 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 /»)
Буду очень признателен за любую помощь.
Хорошо, поэтому я нашел «обходной путь», используя структуру 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, и для чего вы можете ее использовать, она кажется очень полезной. Documentation1, Documentation2, Documentation3.
О, а также, если у вас есть проблемы, когда отладчик говорит, что stat не был объявлен в этой области, убедитесь, что вы пишете это так: struct zip_stat stat;
, Вы, вероятно, пропустили структуру перед объявлением.