将BSTR转换为LPCWSTR

时间:2013-05-17 14:22:29

标签: c++ com atl

这是我的需要

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

如何将BSTR转换为LPCWSTR?

是否有任何标题库可以将任何字符串类型(微软)转换为LPCWSTR类型?

3 个答案:

答案 0 :(得分:6)

只是覆盖NULL情景,你就可以了

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

正如你在标签中提到的ATL,这里是ATL风格的单行:

OutputDebugString(CString(l_strArgs));

或者,为了确保您保持在Unicode域中:

OutputDebugStringW(CStringW(l_strArgs));

答案 1 :(得分:2)

我刚发现这个

BSTR l_strArgs;
LPCWSTR  sth;
CString cs(_com_util::ConvertBSTRToString(l_strArg));
sth = cs;
OutputDebugStringW(sth);

答案 2 :(得分:0)

当您使用类似_bstr_t的包装器时,BSTR变得更容易处理。这是关于它们的微软文档 http://msdn.microsoft.com/en-us/library/zthfhkd6%28v=VS.100%29.aspx

正如您所料,_bstr_t构造函数之一采用BSTR参数。还有一个运算符返回一个const wchar_t *,您应该能够将其强制转换为LPCWSTR。

希望这有帮助