zip — функция libzip для поиска индекса имени файла не работает

Сегодня я начал изучать 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 /»)

Буду очень признателен за любую помощь.

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, и для чего вы можете ее использовать, она кажется очень полезной. Documentation1, Documentation2, Documentation3.

О, а также, если у вас есть проблемы, когда отладчик говорит, что stat не был объявлен в этой области, убедитесь, что вы пишете это так: struct zip_stat stat;, Вы, вероятно, пропустили структуру перед объявлением.

0

Другие решения


По вопросам рекламы [email protected]