2017-01-28 14 views
0

두 문자열을 연결하려고합니다. # 'char'이고 다른 하나는 int (bstr_t로 변환)이고 bstr (예 : '#') + '1234'는 '# 12345'로 표시). 그러나 연결 후 최종 결과에는 '#'만 포함됩니다. 내가 실수를 저지르고 있는지 나는 모른다.두 개의 Bstr 문자열 concatanation에 대한 C++ 코드

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(); 
} 

답변

1

당신은 크게 _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(); 
}