gpt4 book ai didi

c++ - 如何在 visual studio 中使用 C++ 解压缩压缩文件 (.zip)

转载 作者:行者123 更新时间:2023-11-30 05:05:51 28 4
gpt4 key购买 nike

我正在开发一个 C++ 项目,它需要一个unzip 功能。

我在网上搜索了一下,发现zlib可能有用,但结果zlib只提供了C语言版本,而C++版本只提供给Linux。

我还发现 MSDN 有他们自己的 API : Decompress & Compress 功能,但是在我尝试使用 Decompress 功能解压压缩文件后,我发现MSDN 的“解压缩”功能仅对使用 MSDN 自带的压缩功能压缩的文件有用。

换句话说,如果我有一个 .zip 文件,我无法使用 MSDN API 来解压缩它。

希望任何人有任何想法可以帮助我,非常感谢!!!

最佳答案

您尝试过 libzip 吗?这是一个例子。您还应该从 Github 中找到一些包装器,例如 libzippp .

bool unzip(const std::wstring &zipPath, const std::wstring &desPath)
{
int err;
struct zip *hZip = zip_open_w(zipPath.c_str(), 0, &err);
if (hZip)
{
size_t totalIndex = zip_get_num_entries(hZip, 0);
for (size_t i = 0; i < totalIndex; i++)
{
struct zip_stat st;
zip_stat_init(&st);
zip_stat_index(hZip, i, 0, &st);

struct zip_file *zf = zip_fopen_index(hZip, i, 0);
if (!zf)
{
zip_close(hZip);
return false;
}

std::vector<char> buffer;
buffer.resize(st.size);
zip_fread(zf, buffer.data(), st.size);
zip_fclose(zf);

// your code here: write buffer to file
// desPath
// st.name: the file name

}
zip_close(hZip);
}
return true;
}

关于c++ - 如何在 visual studio 中使用 C++ 解压缩压缩文件 (.zip),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48182274/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com