Название: QByteArray + QDataStream (решено) Отправлено: andrew.k от Июль 07, 2010, 10:40 Мне не совсем понятно поведение приведенного ниже кода:
QByteArray ba; QDataStream ds( &ba, QIODevice::WriteOnly ); QList<QVariant> l; l.append( 1342345 ); l.append( "string" ); l.append( 14.2345 ); ds << l; ba.clear(); ds << l; После вызова ba.clear(), я ожидаю, что массив будет очищен и добавление начнется заново. Он и действительно очищается, но при повторной записи в поток, там появляются лишние данные, которых я не ожидаю. Интуитивно понимаю, что это видимо из-за внутреннего устройства QDataStream, который создает внутренний буффер и производит запись через него. Но как быть, если я действительно хочу очистить ba и начать писать в него заново? Можно конечно создавать QDataStream внутри блока, но это не универсальный выход. Должен быть какой-то аналог QFile::close() я так понимаю. Не создавать же QDataStream динамически? Подскажите. Название: Re: QByteArray + QDataStream Отправлено: maxxant от Июль 07, 2010, 11:03 например так:
ds << l; ds.device()->reset(); ba.clear(); ds << l; QDataStream пишет через QIODevice, которому просто нужно сдвинуть позицию записи в начало с помощью reset() или seek() Название: Re: QByteArray + QDataStream Отправлено: andrew.k от Июль 07, 2010, 13:09 Спасибо!
|