计算Qt5中写入QDataStream的字节数

时间:2016-01-24 23:02:12

标签: c++ count qt5 qdatastream

在我的代码中,我正在准备一些使用QDataStream通过网络发送的数据。在准备工作的中间,我想知道在那一点准备了多少字节。我怎么能这样做?

示例:

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

2 个答案:

答案 0 :(得分: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 :(得分:1)

通常知道字节数的方法:

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