我想解壓縮.zip文件,在指定的位置。用戶輸入要解壓縮的文件的名稱,如「D:\\ folder \\ sample.zip」。我利用拉鍊頭和.cpp文件從該鏈接https://www.codeproject.com/articles/7530/zip-utils-clean-elegant-simple-c-win無法解壓文件到一個文件夾
現在下面是我的代碼
int main()
{
char filename[100];
HZIP hz; DWORD writ;
printf("Enter filename: \n");
gets(filename);
TCHAR *name = (TCHAR *) filename;
hz = OpenZip(name,0);
SetUnzipBaseDir(hz,_T("D:\\unzipped\\"));
ZIPENTRY ze;
GetZipItem(hz,-1,&ze);
int numitems=ze.index;
for (int zi=0; zi<numitems; zi++)
{
GetZipItem(hz,zi,&ze);
UnzipItem(hz,zi,ze.name);
}
CloseZip(hz);
printf("Unzipped\n");
return 0;
}
我需要採取的文件名作爲來自用戶的輸入,爲此我不得不強制轉換它通過使用此聲明
TCHAR *name = (TCHAR *) filename;
但是,這是現在造成問題的聲明。當我調試程序並添加手錶到變量'名稱'時,我看到在類型轉換後,它存儲了一些中文字母,而不是zip文件的路徑
以前的代碼工作正常時,而不是從用戶,我硬編碼的路徑和文件名下面
hz = OpenZip(_T("D:\\folder\\sample.zip"),0);
任何想法,提到我究竟做錯了什麼?
可能有幫助:http://stackoverflow.com/questions/4826189/convert-char-to-wchar-in-c –
不是真的@ASH – user52327
你會試試這個:'wstring filename; std :: wcin >>文件名; OpenZip(filename.c_str(),0);' –