[Qt-interest] How to get unicode data from socket?

Bradley T. Hughes bradley.hughes at nokia.com
Thu Jan 14 12:41:11 CET 2010


On 01/14/2010 12:26 PM, Sean Harmer wrote:
> Hi,
>
> On Thursday 14 January 2010 11:20:00 Alex wrote:
>> Hi,
>>
>>
>> I have a program written in QT and it receives data via socket connection.
>> The data format is:
>> +--------------------+-----------------------+
>> *| sizeOfData(4bytes) | Data (Unicode string) |*
>> +--------------------+-----------------------+
>> My questions are:
>>
>>     1. After I read the first 4 bytes data, I use memcpy() to get/convert
>>   the following data size. Does QT provide a convenient way to achieve this
>>   instead of memcpy()?
>>     2. I use QTcpSocket.read(sizeOfData), which returns the QByteArray, to
>>     read the real data but I can't find a way to convert it to QString. How
>>     should I do?
>>
>
> QString has a constructor that takes a QByteArray:
>
> http://doc.trolltech.com/4.6/qstring.html#QString-8

But this function is documented to convert using toAscii().

Depending on how the OPs string is encoded, you'll probably want to use 
fromUtf8(), fromUtf16(), or possibly the UTF-32 codec (iirc, there is one in 
Qt, but I'm too lazy to look).

-- 
Bradley T. Hughes (Nokia-D-Qt/Oslo), bradley.hughes at nokia.com
Sandakervn. 116, P.O. Box 4332 Nydalen, 0402 Oslo, Norway



More information about the Qt-interest-old mailing list