UCHAR *到std :: string

时间:2013-10-10 19:43:34

标签: c++ winapi

我第一次使用WinAPI,我有一个返回UCHAR *的函数,但是我需要它作为std:string,因为当我尝试将它打印为UCHAR *但是当我做的时候它打印了很多乱码。必须有一些简单的方法来解决这个问题。我用Google搜索了但我找不到任何东西。我甚至不知道UCHAR *是什么,虽然它似乎充当某种字符串。我听说它是​​指向无符号字符串的指针,但我不太清楚这意味着什么。

2 个答案:

答案 0 :(得分:4)

这应该有效

char temp[5];
memcpy(temp, battery_info.Chemistry, 4);
temp[4] = '\0'; // add nul terminator
std::string s = temp; // convert to string

因为您的源数据不一定具有通常的nul终结符,所以我将数据复制到临时char数组,添加了一个nul终止符以确保,然后转换为std :: string。

答案 1 :(得分:1)

由于该结构的成员不是以null结尾:

std::string chemistry(battery_info.Chemistry, battery_info.Chemistry + 4);

无需执行memcpy;

即可获得您想要的行为