Commit add4140c authored by Oleg.Korshul's avatar Oleg.Korshul Committed by Alexander Trofimov

utf16->wstring

git-svn-id: svn://fileserver/activex/AVS/Sources/TeamlabOffice/trunk/ServerComponents@62303 954022d7-b5bf-4e40-9824-e11837661b57
parent b7bdfb8b
......@@ -475,6 +475,44 @@ namespace NSFile
{
GetUtf16StringFromUnicode_4bytes(pUnicodes, lCount, data.Data, data.Length);
}
static std::wstring GetWStringFromUTF16(const CStringUtf16& data)
{
if (0 == data.Length)
return L"";
if (sizeof(wchar_t) == 2)
return std::wstring((wchar_t*)data.Data, data.Length / 2);
int nCount = data.Length / 2;
USHORT* pShort = (USHORT*)data.Data;
wchar_t* pWChar = new wchar_t[nCount + 1];
wchar_t* pWCurrent = pWChar;
int nCurrent = 0;
while (nCurrent < nCount)
{
if (*pShort < 0xD800 || *pShort > 0xDFFF)
{
*pWCurrent = (wchar_t)(*pShort);
++pShort;
++nCurrent;
}
else
{
*pWCurrent = (wchar_t)((((pShort[0]) & 0x03FF) << 10) | ((pShort[1]) & 0x03FF));
}
pShort += 2;
nCurrent += 2;
}
std::wstring sRet(pWChar, pWCurrent - pWChar);
RELEASEARRAYOBJECTS(pWChar);
return sRet;
}
};
class CFileBinary
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment