0

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

4

2 回答 2

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。

于 2013-10-10T19:57:17.540 回答
1

由于该结构的成员不是空终止的:

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

无需执行任何操作即可获得您想要的行为memcpy

于 2013-10-10T20:14:29.730 回答