Я использую QDataStream
для сериализации данных (используя оператор <<
потока) в QByteArray
.Но мне было интересно: безопасно ли читать из базовых QByteArray
между <<
операциями (или могу ли я столкнуться, например, с проблемой буферизации)?
quint8 sumBytes(const QByteArray& byteArray)
{
//This will overflow quickly...
quint8 result = 0;
for (int i = 0; i < byteArray.size(); i++)
result += static_cast<quint8>(byteArray[i]);
return result;
}
QByteArrary createByteArray(qint32 foo, qint32 bar)
{
QByteArray array;
QDataStream stream(&array, QIODevice::ReadWrite);
stream<< foo;
stream<< bar;
// Safe to access array below?
const quint8 byteSum = sumBytes(array);
stream<< byteSum;
return array;
}
Я проверил документациюдля QDataStream
и QByteArray
, но не увидел ничего релевантного, кроме упоминания о том, что QDataStream
использует QBuffer
, поскольку QByteArray
не является QIoDevice
(что заставило меня задать этот вопрос).И все же, QDataStream
не предоставляет flush()
(или подобный метод), так что это может быть безопасно ...?