Конвертировать 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
не может всегда работает, как ожидалось.