Как конвертировать LPBYTE в char * / string в C ++?

Как мне конвертировать LPBYTE в char * или строку?
В частности, я вызываю EnumPrinterDataEx () и извлекаю из него pData и хочу преобразовать его. Когда я пытаюсь конвертировать, используя wcstombs (), он дает только первый символ из pData. Но я хотел знать, как преобразование может быть сделано в целом.

Спасибо

Редактировать:
После получения pData я создал новую переменную LPWSTR, а затем преобразовал ее в char *, используя wcstombs, и все это работало хорошо. Спасибо!

0

Решение

если pData указывает на строку, то это будет строка с нулевым символом в конце ANSI или Unicode (в зависимости от версии функции EnumPrinterDataEx) — так что вы можете просто привести ее:

(char*)pData;
(LPTSTR)pData;
0

Другие решения

Кажется, что ваша строка не многобайтовая, поэтому у вас широкая строка. Вместо того, чтобы манипулировать им с помощью общих функций, используйте широкий версии, 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';
0

По вопросам рекламы [email protected]