我正在尝试将两个bstr_t连接起来,一个是char'#',另一个是int(我将其转换为bstr_t)并将其作为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的构造函数大大简化您的功能。 One的重载将const _variant_t&
作为输入参数并将其解析为字符串。因此,您的函数可能如下所示:
void function(BSTR* opbstrValue)
{
_bstr_t res(L"#");
res += _bstr_t(12345); //replace with imgFrameIdentity.m_nFrameId
*opbstrValue = res.Detach();
}