2013-05-17 3 views
3

Вот моя потребностьновообращенный BSTR в LPCWSTR

BSTR l_strArgs; 
LPCWSTR sth; 
//---- 
//--- 
OutputDebugStringW(sth); 

Как конвертировать BSTR в LPCWSTR?

Есть ли какая-либо библиотека только для заголовков, которая скрывает любой тип строки (microsoft) до типа LPCWSTR?

+0

возможного дубликат [АТЛ как Преобразовать BSTR \ * ули в реестр key.SetValue (LPCTSTR типа ул] (Http: // StackOverflow .com/вопросы/7654998/АТЛ-хау к обращенным-BSTR-ул-к-реестре ключ-setvaluelpctstr-ул-типа) –

ответ

6

Просто покрывают NULL сценарий, и вы хорошо идти

BSTR l_strArgs; 
LPCWSTR sth = strArgs ? strArgs : L""; 

Как вы упомянули ATL в теге, здесь АТЛ-стиль один вкладыш:

OutputDebugString(CString(l_strArgs)); 

или, чтобы сделать что вы находитесь в домене Unicode:

OutputDebugStringW(CStringW(l_strArgs)); 
0

BSTRs становится проще в обращении, когда вы используете оболочку, как _bs tr_t вместо этого. Вот документация по ним на микрософт http://msdn.microsoft.com/en-us/library/zthfhkd6%28v=VS.100%29.aspx

Как и следовало ожидать, один из конструкторов _bstr_t принимает параметр BSTR. Существует также оператор для возврата const wchar_t *, который вы должны использовать для LPCWSTR.

Надеется, что это помогает

2

Я только что нашел этот один

BSTR l_strArgs; 
LPCWSTR sth; 
CString cs(_com_util::ConvertBSTRToString(l_strArg)); 
sth = cs; 
OutputDebugStringW(sth); 
Смежные вопросы