Как мне конвертировать LPBYTE в char * или строку?
В частности, я вызываю EnumPrinterDataEx () и извлекаю из него pData и хочу преобразовать его. Когда я пытаюсь конвертировать, используя wcstombs (), он дает только первый символ из pData. Но я хотел знать, как преобразование может быть сделано в целом.
Спасибо
Редактировать:
После получения pData я создал новую переменную LPWSTR, а затем преобразовал ее в char *, используя wcstombs, и все это работало хорошо. Спасибо!
если pData указывает на строку, то это будет строка с нулевым символом в конце ANSI или Unicode (в зависимости от версии функции EnumPrinterDataEx) — так что вы можете просто привести ее:
(char*)pData;
(LPTSTR)pData;
Кажется, что ваша строка не многобайтовая, поэтому у вас широкая строка. Вместо того, чтобы манипулировать им с помощью общих функций, используйте широкий версии, 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';