Преобразование BYTE * из modBaseAddr из MODULEENTRY32 в std :: string - PullRequest
0 голосов
/ 22 февраля 2019

Я заполнил MODULEENTRY32 структуру из winapi, включая modBaseAddr.Мне нужно преобразовать его в std::string, сохраняя его формат.Я попытался скопировать содержимое BYTE *modBaseAddr в буфер char, а затем сделать из него std::string.Это генерировало некоторые загадочные символы, а иногда приводило к нарушению доступа к mem: 0xC0000005: Access violation reading location 0x001013C0.Я понимаю, почему это происходит, и после дальнейших исследований я нахожусь в тупике на любых решениях.

Спасибо,

Редактировать: Чтобы прояснить свои намерения, я регистрирую это исключительно для адреса памяти

1 Ответ

0 голосов
/ 22 февраля 2019

Вы можете использовать std::ostringstream.Любой тип указателя, который передается на operator<<, кроме char*, выведет адрес, на котором он хранится.char* обрабатывается специально как строка с нулевым символом в конце.Поскольку BYTE* действительно char*, вам просто нужно набрать его, чтобы напечатать его адрес:

std::ostringstream o;
o << (void*) modBaseAddr;
std::string str = o.str();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...