将BSTR转换为LPCWSTR

convert BSTR to LPCWSTR

本文关键字:LPCWSTR 转换 BSTR      更新时间:2023-10-16

这是我的需求

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

如何将BSTR转换为LPCWSTR ?

是否存在将任何字符串类型(microsoft)转换为LPCWSTR类型的仅头库?

只要覆盖NULL场景就可以了

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

正如您在标签中提到的ATL,下面是ATL风格的一行代码:

OutputDebugString(CString(l_strArgs));

或者,为了确保你在Unicode域内:

OutputDebugStringW(CStringW(l_strArgs));

我刚找到这个

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

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

如您所料,其中一个_bstr_t构造函数接受BSTR形参。还有一个返回const wchar_t*的操作符,您应该能够将其强制转换为LPCWSTR。

希望能有所帮助