【问题标题】:convert BSTR to LPCWSTR将 BSTR 转换为 LPCWSTR
【发布时间】:2013-05-12 18:17:09
【问题描述】:

这是我的需要

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

如何将 BSTR 转换为 LPCWSTR ?

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

【问题讨论】:

标签: c++ com atl


【解决方案1】:

只需覆盖NULL 场景就可以了

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

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

OutputDebugString(CString(l_strArgs));

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

OutputDebugStringW(CStringW(l_strArgs));

【讨论】:

    【解决方案2】:

    我刚找到这个

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

    【讨论】:

      【解决方案3】:

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

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

      希望对你有帮助

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-11-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-04-08
        • 2010-09-15
        • 1970-01-01
        • 2013-05-24
        相关资源
        最近更新 更多