2010-09-06 3 views
14

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

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

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

ответ

18

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

delete[] p; 

Несколько предостережений, хотя (как вы можете видеть из BSTR documentation on MSDN):

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

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

Смежные вопросы