Преобразование типов из строки в const wchar_t *. Тип не соответствует - PullRequest
0 голосов
/ 13 апреля 2020

Привет, у меня есть следующая функция, которую я хочу вызвать:

uintptr_t GetModuleBaseAddress(DWORD procId, const wchar_t* modName)

Теперь я хочу написать вспомогательную функцию, которая принимает данную строку и преобразует ее в целевой параметр 'const wchar_t* modName'

У меня есть следующая функция:

wchar_t* stringToWchar(std::string s) {
  std::wstring widestr = std::wstring(s.begin(), s.end());
  const wchar_t* widestr = widestr.c_str();
  return widestr;
}

на обратной линии я получаю ошибку: "no suitable conversion function from to exists".

Что мне здесь не хватает?

В окончательный результат я хочу сделать звонок как:

GetModuleBaseAddress(procId, stringToWchar("module.exe"))

Thx.

1 Ответ

2 голосов
/ 13 апреля 2020

Перепишите вашу функцию, чтобы получить wstring

std::wstring stringToWchar(std::string s) {
    return std::wstring(s.begin(), s.end());
}

, затем используйте ее следующим образом:

GetModuleBaseAddress(procId, stringToWchar("module.exe").c_str());

Ваш код пытался вернуть указатель на объект, который больше не существует (widestr). Вы также дважды объявили переменную widestr и попытались удалить квалификатор const.

Не программируйте с указателями, если можете помочь. Если вам нужен указатель для какого-либо стороннего API, сгенерируйте указатель в том месте, где вы вызываете стороннюю функцию, а не раньше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...