Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
如何将 LPBYTE 转换为 char * 或字符串?具体来说,我正在调用 EnumPrinterDataEx(),并从中取出 pData,并希望对其进行转换。当我尝试使用 wcstombs() 进行转换时,它只给出 pData 中的第一个字符。但我想知道一般如何进行转换。
谢谢
编辑:获得 pData 后,我创建了一个新的 LPWSTR 变量,然后使用 wcstombs 将其转换为 char *,一切正常。谢谢!
如果 pData 指向一个字符串,那么它将是 ANSI 或 Unicode 空终止字符串(取决于 EnumPrinterDataEx 函数版本) - 所以你可以简单地转换它:
(char*)pData; (LPTSTR)pData;
看来您的字符串不是多字节的,因此您的字符串很宽。例如,不要使用通用功能来操作它,而是使用宽版本wcslen。
wcslen
如果需要转换为 a char*,则使用wcstombs,如下所示:
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';