В моем коде я готовлю некоторые данные для отправки по сети, используя QDataStream
, В середине подготовки я хотел бы точно знать, сколько байтов было подготовлено на тот момент. Как я могу это сделать?
Пример:
int myFunc(QDataStream &ds){
ds << "hello"ds << 123;
ds << 456.7f;
//...
//How can I do this:
return ds.numberOfBytesPipedIntoThisQDataStreamAtThisTime();
}
Обычный способ узнать количество байтов:
QByteArray buf;
QDataStream stream( &buf, QIODevice::ReadWrite );
stream << someData;
int count = buf.size();
Это может сработать (хотя выглядит не очень элегантно).
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;
}