3

这是我的需要

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

如何将 BSTR 转换为 LPCWSTR ?

是否有任何仅将任何字符串类型(微软)转换为 LPCWSTR 类型的标头库?

4

3 回答 3

6

只需涵盖NULL场景,您就可以开始了

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

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

OutputDebugString(CString(l_strArgs));

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

OutputDebugStringW(CStringW(l_strArgs));
于 2013-05-17T14:27:40.333 回答
2

我刚找到这个

BSTR l_strArgs;
LPCWSTR  sth;
CString cs(_com_util::ConvertBSTRToString(l_strArg));
sth = cs;
OutputDebugStringW(sth);
于 2013-05-17T14:32:09.603 回答
1

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

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

希望这可以帮助

于 2013-05-17T14:30:47.520 回答