如何从BSTR获得价值*

时间:2018-06-29 09:33:22

标签: visual-c++

我有一个BSTR *。如何从BSTR *获取值到std :: string,以便我可以将其打印到控制台?

BSTR* ptr;
HRESULT result = objPtr->GetValue(ptr);
//need to print to console the value

2 个答案:

答案 0 :(得分:1)

std::wcout << ptr;

应该起作用,因为它与wchar_t *兼容。 您还可以构造std::wstring以外的BSTR的nullptr

如果您要创建其中的std::string,可以查看其他问题,例如 this one,但请注意编码的思想。 BSTR编码为UTF-16。

答案 1 :(得分:1)

有很多方法可以实现这一目标;这是一个简单的示例,利用_bstr_t Class来实现从BSTR*std::string的转换。

#include "stdafx.h"
#include <Windows.h>
#include <comutil.h>
#include <iostream>
#include <string>
#pragma comment(lib,"comsuppw.lib")

int _tmain(int argc, _TCHAR* argv[])
{
    const BSTR* const pbstr = new BSTR(::SysAllocString(L"Hello World"));

    if (pbstr)
    {
        const std::string stdstr(_bstr_t(*pbstr, true));

        std::cout << stdstr << std::endl;

        ::SysFreeString(*pbstr);
        delete pbstr;
    }

    return 0;
}