Кто-нибудь знает, как конвертировать BSTR в char *?Преобразование BSTR в char *
Обновление: Я попытался это сделать, но не знаю, правильно это или нет.
char *p= _com_util::ConvertBSTRToString(URL->bstrVal);
strcpy(testDest,p);
Кто-нибудь знает, как конвертировать BSTR в char *?Преобразование BSTR в char *
Обновление: Я попытался это сделать, но не знаю, правильно это или нет.
char *p= _com_util::ConvertBSTRToString(URL->bstrVal);
strcpy(testDest,p);
Ваш код в порядке. ConvertBSTRToString
делает как раз это. Что касается strcpy
, то должен быть достаточно большим, чтобы удерживать строку, на которую указывает p
. Обратите внимание, что поскольку ConvertBSTRToString выделяет новую строку, вам нужно будет освободить ее где-то по строке. После того, как вы закончите убедитесь, что вы делаете:
delete[] p;
Несколько предостережений, хотя (как вы можете видеть из BSTR
documentation on MSDN):
- В Microsoft Windows, состоит из строки символов Unicode (широкий или двухбайтовых символов).
- Может содержать несколько встроенных нулевых символов.
Таким образом, ваш strcpy
может не всегда работает, как ожидалось.