如何将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);
答案 0 :(得分:4)
如果您的输入是BSTR
(似乎是),则数据已经是Unicode,您可以直接将其转换为wstring
,如下所示。 _bstr_t
对char*
和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字符串。您需要指定源代码页。