2

在我的代码中,我正在准备一些数据以使用QDataStream. 在准备过程中,我想知道当时准备了多少字节。我怎样才能做到这一点?

例子:

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

2 回答 2

2

这可以工作(虽然它看起来不是很优雅)。

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;
}
于 2016-01-24T23:28:18.553 回答
2

了解字节数的常用方法:

QByteArray buf;
QDataStream stream( &buf, QIODevice::ReadWrite );
stream << someData;
int count = buf.size();
于 2016-01-24T23:30:14.220 回答