Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/131.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 使用zlib解压而不使用SetCurrentDirectory_C++_Zip - Fatal编程技术网

C++ 使用zlib解压而不使用SetCurrentDirectory

C++ 使用zlib解压而不使用SetCurrentDirectory,c++,zip,C++,Zip,我正在用它来解压zip文件列表。下面是一个简单的方法。但是SetCurrentDirectory函数调用会影响我的其他线程。有没有办法用zlib解压到特定的目录 SetCurrentDirectory("c:\\docs\\stuff"); HZIP hz = OpenZip("c:\\stuff.zip",0); ZIPENTRY ze; GetZipItem(hz,-1,&ze); int numitems=ze.index; for (int i=0; i<numitems;

我正在用它来解压zip文件列表。下面是一个简单的方法。但是
SetCurrentDirectory
函数调用会影响我的其他线程。有没有办法用zlib解压到特定的目录

SetCurrentDirectory("c:\\docs\\stuff");
HZIP hz = OpenZip("c:\\stuff.zip",0);
ZIPENTRY ze; GetZipItem(hz,-1,&ze); int numitems=ze.index;
for (int i=0; i<numitems; i++)
{ GetZipItem(hz,i,&ze);
   UnzipItem(hz,i,ze.name);
 }
 CloseZip(hz);
SetCurrentDirectory(“c:\\docs\\stuff”);
HZIP hz=OpenZip(“c:\\stuff.zip”,0);
紫丁香;GetZipItem(hz,-1,&ze);int numitems=ze.index;

对于(int i=0;i ),您有一个包装器,允许使用ZLIB库。您已经将问题标记为C++,您使用的是C++的包装器,同时使用的是全局助手API,使用这个包装器。 我建议您直接使用TUnzip包装(请参见如何实现内部
作为示例)。TUnzip类有一个很好的方法,允许设置基本目录
ZRESULT TUnzip::SetUnzipBaseDir(const TCHAR*dir)
。调用它设置目录找到解决方案

void unZipPackage(std::wstring zip_file,std::wstring dest_dir){ 

    HZIP hz = OpenZip(zip_file.c_str(),0);  
    ZIPENTRY ze; GetZipItem(hz,-1,&ze); int numitems=ze.index;
    for (int i=0; i<numitems; i++)
    { 
        GetZipItem(hz,i,&ze);               
        wchar_t dest[MAX_PATH];
        swprintf(dest,MAX_PATH,L"%s\\%s",dest_dir.c_str(),ze.name);     
        UnzipItem(hz,i,dest);       
    }   
    CloseZip(hz);
}
void解压包(std::wstring zip_文件,std::wstring dest_dir){
HZIP hz=OpenZip(zip_file.c_str(),0);
ZIPENTRY ze;GetZipItem(hz,-1,&ze);int numitems=ze.index;

例如(inti=0;iit看起来不像zlib。手册()中没有您示例中的函数。我经常使用zlib,但从未设置currentdirectory()@cha:这是确切的源文件。实际上我不知道这不是zlib。但是我不能更改库,因为我正在对现有项目进行一些更改。无论如何,它帮助您的评论找到了答案。谢谢。