微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何使用 C++ 中的 LibArchive 在内存中解压缩存档?

如何解决如何使用 C++ 中的 LibArchive 在内存中解压缩存档?

我不明白这个库是如何工作的,而且文档是我见过的最糟糕的文档之一。如何将存档中存储的文本文件读取到内存中?我是否使用了正确的功能

        // Reading the raw zip file into memory
        std::ifstream raw_file("archive.zip",std::ios::binary);
        auto buffer = static_cast<std::ostringstream&>(
                  std::ostringstream{} << raw_file.rdbuf())
                  .str();

        struct archive* a = archive_read_new();
        struct archive_entry* entry;
        archive_read_support_compression_all(a);
        archive_read_support_format_raw(a);
        int r =
            archive_read_open_memory(a,buffer.data(),buffer.size());
        while (archive_read_next_header(a,&entry) == ARCHIVE_OK) {
            archive_read_data(a,buffer.size());
        }

        // This prints out binary data instead of text files stored inside the archive
        std::cout << buffer << std::endl;
        r = archive_read_free(a);

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。