| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: COM/DCOM/ActiveX/ATL/CORBA > _bstr_t to char |
| Автор: lv151 1.6.2009, 17:17 |
| _CommandPtr pCmdChange _bstr_t pbstr; pbstr = pCmdChange->GetCommandText(); char *str; wcstombs((CHAR*)&str,(OLECHAR*)&pbstr,sizeof(str)); В str абра-кадабра |
| Автор: jonie 2.6.2009, 07:11 | ||
объясняю что вы сделали: 1) первым аргументом вы передали указатель на указатель, притом что последний никто не инициализировал. 2) sizeof(str) на x86 "стандартно" будет 4 байта. 3) str, даже если вы его будете передавать, ничем не инициализирован. Он должен указывать на массив. 4)непонятно зачем написано это: (OLECHAR*)&pbstr, т.к. у _bstr_t есть operator WCHAR* перегрузка ... |
| Автор: jonie 2.6.2009, 08:59 |
| только нельзя забывать что: ConvertBSTRToString allocates a string you must delete. т.е. вызывать SysFreeString() нужно для возрата не забывать, а то течи будут |
| Автор: lv151 2.6.2009, 09:02 |
_bstr_t pbstr; pbstr = pCmdChange->GetCommandText(); - а это? |
| Автор: Andrey44 2.6.2009, 09:14 | ||||
Да-да, все верно. Забыл упомянуть Добавлено через 4 минуты и 45 секунд
Куда он указывает? |
| Автор: lv151 2.6.2009, 09:25 |
Я решил что он инициализируется внутри функции. |
| Автор: Andrey44 2.6.2009, 09:28 | ||
|