[Interest] Filling QString from raw UTF16 data

Konstantin Tokarev annulen at yandex.ru
Sun Aug 12 11:38:45 CEST 2012



12.08.2012, 00:25, "Thiago Macieira" <thiago at kde.org>:
> On sábado, 11 de agosto de 2012 20.51.30, Konstantin Tokarev wrote:
>
>>  Hi all,
>>
>>  I'd like to use SCSU encoding from ICU library in my Qt application. Here is
>>  a code of my decoding function:
>>
>>      QString result;
>>      result.resize(maxSize); // maxSize is guaranteed to be >= size
>>      const int size = ucnv_toUChars(m_converter, const_cast<ushort
>>  *>(result.utf16()), maxSize, a, inSize, &status);
>
> utf16() is wrong.
>
> Instead, use:
>         reinterpret_cast<ushort *>(result.data())
>
>>  result.resize(size);
>>      return result;
>>
>>  (ucnv_toUChars fills array in second argument with UTF16 string and returns
>>  its size)
>>
>>  Is it safe to use return value of QString::utf16() this way in this context
>>  (QString is always created on stack locally)?
>
> No.

Thank you very much!

-- 
Regards,
Konstantin



More information about the Interest mailing list