Преобразование BSTR в char *

Кто-нибудь знает, как преобразовать BSTR в char *?

Обновление: я пытался это сделать, но не знаю, правильно это или нет.

char *p= _com_util::ConvertBSTRToString(URL->bstrVal);
strcpy(testDest,p );

Ответы

Ответ 1

Ваш код в порядке. ConvertBSTRToString делает именно это. Что касается strcpy, testDest должен быть достаточно большим, чтобы удерживать строку, на которую указывает p. Обратите внимание, что поскольку ConvertBSTRToString выделяет новую строку, вам нужно будет освободить ее где-то по строке. По завершении убедитесь, что вы сделали:

delete[] p; 

Несколько предостережений (как вы можете видеть из BSTR документации на MSDN):

  • В Microsoft Windows состоит из строки символов Unicode (широкий или двухбайтовые символы).
  • Может содержать несколько встроенных нулевых символов.

Итак, ваш strcpy может работать не так, как ожидалось.