用于连接两个 Bstr 字符串的 C++ 代码

C++ code for concatanation of two Bstr strings

我正在尝试连接两个 bstr_t,一个是 char '#',另一个是 int(我将其转换为 bstr_t)并将其 return 作为bstr(例如'#'+'1234'为'#12345')。但是,串联后的最终结果仅包含“#”。我不知道我哪里弄错了。

function(BSTR* opbstrValue)
{
    _bstr_t sepStr = SysAllocString(_T("#"));

    wchar_t temp_str[20]; // we assume that the maximal string length for displaying int can be 10
    itow_s(imgFrameIdentity.m_nFrameId, temp_str, 10);
    BSTR secondStr = SysAllocString(temp_str);
    _bstr_t secondCComStr; 
    secondCComStr.Attach(secondStr);

    _bstr_t wholeStr = sepStr + secondCComStr;

    *opbstrValue = wholeStr.Detach();
}

您可以大大简化您的函数,方法是利用 _bstr_t's constructor. One 的重载,将 const _variant_t& 作为输入参数并将其解析为字符串。因此,您的函数可能如下所示:

void function(BSTR* opbstrValue)
{
    _bstr_t res(L"#");
    res += _bstr_t(12345); //replace with imgFrameIdentity.m_nFrameId

    *opbstrValue = res.Detach();
}