将UInt16 *转换为char

时间:2016-03-18 07:16:35

标签: c++

我想参考the test application code for 7zip

在以下行(第383行):

SzArEx_GetFileNameUtf16(&db, i, temp); //Line 383, gets directory and filename

uint16 * value temp获取文件路径的引用表达式(我假设它是一个字符串)。

我有一个const char,让它命名为filePathToCheck,它基本上是一个文件路径名。我想要的是一种比较filePathToCheck值和临时值的方法,这样我就可以选择"我要解密的文件

我的初始实现是获取临时值的多字节值,但是这会给出一个空字符串,可以在下面的方法中找到:

WideCharToMultiByte(CP_UTF8,NULL,temp,sizeof(temp),testa /* char * */, 0, NULL, NULL);

运行测试应用程序(已处理参数)时,testa在WideCharToMultiByte函数后仍为空字符串。我是否完全走错了路,我应该以另一种方式处理?

Sample code because the minimum code is still too large

1 个答案:

答案 0 :(得分:1)

sizeof(temp)返回uint *的大小,即4或8.您想要的是temp的长度(以字符为单位),或者如果temp为null,则可以简单地传递-1封端的。

testa最好是一个足够大的字节数组(不是字符指针!)。下一个参数不应该是0,而是sizeof(testa)