конвертировать BSTR в wstring - PullRequest
       2

конвертировать BSTR в wstring

2 голосов
/ 28 сентября 2010

Как конвертировать char [256] в wstring?

update.вот мой текущий код:

char testDest[256];
char *p= _com_util::ConvertBSTRToString(url->bstrVal);

for (int i = 0; i <= strlen(p); i++)
{
  testDest[i] = p[i];   
}

// need to convert testDest to wstring to I can pass it to this below function...

writeToFile(testDestwstring);

Ответы [ 2 ]

4 голосов
/ 28 сентября 2010

Если вы вводите BSTR (как кажется), то данные уже являются Unicode, и вы можете просто привести их к wstring следующим образом. _bstr_t имеет неявные преобразования как char*, так и wchar*, что исключает необходимость ручного преобразования кода Win32.

if (url->bstrVal)
{
    // true => make a new copy - can avoid this if source 
    // no longer needed, by using false here and avoiding SysFreeString on source

    const _bstr_t wrapper(url->bstrVal, true); 
    std::wstring wstrVal((const _wchar_t*)wrapper);
}

См. здесь для получения более подробной информации об этой области использования Windows. В этой области легко испортить использование Win32 API - использование оболочки BSTR позволяет избежать как копирования данных (при разумном использовании), так и сложности кода.

3 голосов
/ 28 сентября 2010

MultiByteToWideChar вернет строку UTF-16. Вам необходимо указать исходную кодовую страницу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...