你可以做這樣的事情
std::string WstrToUtf8Str(const std::wstring& wstr)
{
std::string retStr;
if (!wstr.empty())
{
int sizeRequired = WideCharToMultiByte(CP_UTF8, 0, wstr.c_str(), -1, NULL, 0, NULL, NULL);
if (sizeRequired > 0)
{
std::vector<char> utf8String(sizeRequired);
int bytesConverted = WideCharToMultiByte(CP_UTF8, 0, wstr.c_str(),
-1, &utf8String[0], utf8String.size(), NULL,
NULL);
if (bytesConverted != 0)
{
retStr = &utf8String[0];
}
else
{
std::stringstream err;
err << __FUNCTION__
<< " std::string WstrToUtf8Str failed to convert wstring '"
<< wstr.c_str() << L"'";
throw std::runtime_error(err.str());
}
}
}
return retStr;
}
你可以給你的BSTR的功能作爲一個std :: wstring的
你能告訴我一個例子,因爲我不知道如何一起工作它。 BSTR輸入參數在UTF-16le – user3252635
沒有時間創建一個,但發現[鏈接](https://stackoverflow.com/questions/7232710/convert-between-string-u16string-u32string)他涵蓋了非常明確。我希望這有助於 – beardedN5rd