Копирование BSTR в символ [1024]? - PullRequest
0 голосов
/ 05 октября 2010

Я работаю в веб-браузере с c ++, используя IWebBrowser2.Объявленный сверху, вне всякой области, у меня есть это:

static char buf[1024];

В событии documentcomplete я установил BSTR с:

CComBSTR bstrHTMLText;
X->get_outerHTML(&bstrHTMLText);

Что я хочу сделать, это скопироватьЗначение bstrHTMLText в buf (если длина bstrHTMLText> 1024, просто заполните buf и игнорируйте остальные).каждый раз, когда документ завершается.

Как я могу это сделать?

1 Ответ

1 голос
/ 05 октября 2010

A BSTR является тайным указателем на строку Unicode со скрытым префиксом длины, сидящим перед данными строки. Таким образом, вы можете просто привести его к wchar_t* и затем преобразовать эту строку широких символов в строку ANSI, например, используя WideCharToMultiByte:

WideCharToMultiByte(CP_UTF8,
                    0, 
                    bstrHTMLText.m_str,
                    SysStringLen(bstrHTMLText.m_str),
                    buf,
                    sizeof(buf),
                    NULL,
                    NULL);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...