[Development] Weird offseting in QDataStream
andre at familiesomers.nl
Fri Nov 8 10:42:21 CET 2013
Christian Ehrlicher schreef op 8-11-2013 10:29:
> Am 08.11.2013 10:15, schrieb Yves Bailly:
>> Le 08/11/2013 10:05, Giuseppe D'Angelo a écrit :
>>> On 8 November 2013 10:01, Yves Bailly <yves.bailly at sescoi.fr> wrote:
>>>> As a float is 4 bytes, I would expect the second f.pos() to display "4"... but
>>>> it displays "8", as if QDataStream had moved 8 bytes ahead instead of just 4.
>>>> Needless to say, the read float is wrong...
>>>> Am I missing something here, or is it a bug?
>>> See QDataStream::setFloatingPointPrecision. The default is double.
>> That's pretty strange... what if I want to read a float then a double? do I
>> have to switch between the two each time?
>> Does this means it's impossible to use code like this:
>> float f;
>> double d;
>> datastream >> f >> d;
> setFloatingPointPrecision does only change the way the floating point
> numbers are stored in the data stream, not what you read from it.
> Also I think you're wrong in what you want to do. You can't read data
> from a file which was not stored with QDataStream before! See
That sounds very unlikely. It would mean that you cannot use symetric
code for reading and writing data:
datastream << f << d;
//reading, would not work according to Christian
datastream >> f >> d; //would not work according to you
//reading, according to Christian
double df, d;
datastream >> df >> d;
f = static_cast<float>(d);
I'm quite sure that you _can_ use the symetric (first) version.
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the Development