Подсчитать количество байтов, записанных в QDataStream в Qt5

В моем коде я готовлю некоторые данные для отправки по сети, используя QDataStream, В середине подготовки я хотел бы точно знать, сколько байтов было подготовлено на тот момент. Как я могу это сделать?

Пример:

int myFunc(QDataStream &ds){
ds << "hello"ds << 123;
ds << 456.7f;
//...
//How can I do this:
return ds.numberOfBytesPipedIntoThisQDataStreamAtThisTime();
}

1

Решение

Обычный способ узнать количество байтов:

QByteArray buf;
QDataStream stream( &buf, QIODevice::ReadWrite );
stream << someData;
int count = buf.size();
1

Другие решения

Это может сработать (хотя выглядит не очень элегантно).

int myFunc(QDataStream& ds){
QBuffer buf;
buf.open(QBuffer::WriteOnly);
QDataStream tmpStream(&buf);

tmpStream << "hello";
tmpStream << 123;
tmpStream << 456.7f;
int written = buf.size();
if(ds.device()->write(buf.data()) != buf.data().size()) {
// handle error
}
return written;
}
1

По вопросам рекламы [email protected]