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