zenz
@zenz

Как конвертировать указатель PWSTR в указатель на string (c++)?

Есть у кого пример подобной конвертации?
  • Вопрос задан
  • 206 просмотров
Решения вопроса 1
alex1951
@alex1951
"умных преподавателей слушал я невнимательно..."
Ничто не мешает Вам написать
PWSTR pwc = L"qwerty";
    string* ps  =  (string*) pwc;
    cout << std::hex << (int)( (*(char*)ps) ) << ' ' << (int) ( (* ((char*)ps + 1)) )  << std::dec << endl;
    //71 0

71 0 - код "широкого" символа q
Смотрите сами, есть ли в этом какой смысл.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
Adamos
@Adamos
std::string down(PWSTR pointer)
{
  std::wstring w(*pointer);
  std::string s(w->c_str());
  return s;
}

Вот только то, что хочет std::string, может предполагать, что текст в ней будет в однобайтной кодировке, и если это элементы UI, например - кириллица после такого "преобразования" пойдет кракозябрами. Да и латинице может поплохеть.
Так что, скорее всего, нужно не типы конвертировать, а кодировки.
Ответ написан
Комментировать
mayton2019
@mayton2019
Bigdata Engineer
Тут проблема наверное в том что PWSTR - имеет фиксированную разрядность (это широкий символ w_char). А std::string зависит от опций препроцессора UNICODE. Так-то оно конструируется через конструктор string или присвоение.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы