как получить значение от BSTR * - PullRequest
0 голосов
/ 29 июня 2018

У меня есть BSTR *. как получить значение из BSTR * в std :: string, чтобы я мог распечатать его на консоли?

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

Ответы [ 2 ]

0 голосов
/ 02 июля 2018

Есть много способов сделать это; Вот простой пример использования класса _bstr_t для преобразования из 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;
}
0 голосов
/ 29 июня 2018
std::wcout << ptr;

должно работать, потому что оно совместимо с wchar_t *. Вы также можете создать std::wstring BSTR, который не является nullptr.

Если вы хотите создать std::string, вы можете проверить следующие вопросы: это , но имейте в виду идеи кодирования. BSTR кодируется как UTF-16.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...