0

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

谢谢

编辑:获得 pData 后,我创建了一个新的 LPWSTR 变量,然后使用 wcstombs 将其转换为 char *,一切正常。谢谢!

4

2 回答 2

1

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

(char*)pData;
(LPTSTR)pData;
于 2014-05-23T17:18:25.087 回答
0

看来您的字符串不是多字节的,因此您的字符串很宽。例如,不要使用通用功能来操作它,而是使用版本wcslen

如果需要转换为 a 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';
于 2014-05-23T17:49:35.313 回答