如何在C ++中将LPBYTE转换为char * / string?

时间:2014-05-23 16:51:05

标签: c++ string char lpbyte

如何将LPBYTE转换为char *或字符串? 具体来说,我调用EnumPrinterDataEx(),并从中取出pData,并希望转换它。当我尝试使用wcstombs()进行转换时,它只提供pData中的第一个字符。但我想知道如何进行转换。

由于

编辑: 获取pData后,我创建了一个新的LPWSTR变量,然后使用wcstombs将其转换为char *,这一切都运行良好。谢谢!

2 个答案:

答案 0 :(得分:0)

如果pData指向一个字符串,那么它将是ANSI或Unicode空终止字符串(取决于EnumPrinterDataEx函数版本) - 所以你可以简单地转换它:

(char*)pData;
(LPTSTR)pData;

答案 1 :(得分:0)

您的字符串似乎不是多字节的,因此您有一个宽字符串。不要使用常用功能对其进行操作,而是使用wide版本,例如wcslen

如果需要转换为char*,请使用wcstombs,如下所示:

#include <cstdlib>

size_t len = wcslen(input) * 2 + 1;
char * target = new char[len];
memset(target, 0, len);
if (wcstombs(target, input, len) == len) target[len - 1] = '\0';