Конвертировать BSTR в char*

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

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

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

1 ответов


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

delete[] p; 

пару моментов, хотя (как вы можете видеть из BSTR документация по MSDN):

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

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