作爲筆記,大家分享:
static std::string BSTR2String(BSTR str)
{
char buffer[1024] = {0};
wchar_t *tmp = str;
int BSTRLen = wcstombs(NULL, tmp, 0);
wcstombs(buffer, tmp, BSTRLen);
return std::string(buffer);
}
這個是參考的 http://bbs.csdn.net/topics/370064299
BSTR bstr;
setlocale(LC_ALL, ""); // 必須設置才能正確處理中文符號,否則會出現截斷
int nLenOfWideCharStr = mbstowcs(NULL, criteria, strlen(criteria)); // 計算目標多字節字串的長度
wchar_t *wcCriteria = (wchar_t *)malloc(sizeof(wchar_t) * nLenOfWideCharStr); // 分配目標字串的存儲空間
mbstowcs(wcCriteria, criteria, strlen(criteria)); // 執行轉換
bstr = SysAllocString(wcCriteria); // 根據wchar_t字串生成BSTR字串
delete(wcCriteria); // 銷燬wchar_t字串的存儲空間