将BSTR转换为wstring

时间:2010-09-28 07:55:34

标签: windows visual-c++

如何将char [256]转换为wstring?

更新。这是我目前的代码:

char testDest[256];
char *p= _com_util::ConvertBSTRToString(url->bstrVal);

for (int i = 0; i <= strlen(p); i++)
{
  testDest[i] = p[i];   
}

// need to convert testDest to wstring to I can pass it to this below function...

writeToFile(testDestwstring);

2 个答案:

答案 0 :(得分:4)

如果您的输入是BSTR(似乎是),则数据已经是Unicode,您可以直接将其转换为wstring,如下所示。 _bstr_tchar*wchar*进行了隐式转换,避免了手动Win32代码转换的需要。

if (url->bstrVal)
{
    // true => make a new copy - can avoid this if source 
    // no longer needed, by using false here and avoiding SysFreeString on source

    const _bstr_t wrapper(url->bstrVal, true); 
    std::wstring wstrVal((const _wchar_t*)wrapper);
}

有关此Windows使用领域的详细信息,请参阅here。在这个领域很容易搞乱Win32 API的使用 - 使用BSTR包装器可以避免数据拷贝(如果明智地使用)和代码复杂性。

答案 1 :(得分:3)

MultiByteToWideChar将返回UTF-16字符串。您需要指定源代码页。