C++ QDataStream不增加QByteArray的位置

C++ QDataStream不增加QByteArray的位置,c++,qt,windows-10,qt5,qdatastream,C++,Qt,Windows 10,Qt5,Qdatastream,当我重复向QDataStream对象写入原始网络字节时,QDataStream从不增加底层QByteArray的写入位置 代码如下: QByteArray recvBuf; int bytePosition = 0; void init( ){ recvBuf = QByteArray( 240 * 10, Qt::Uninitiliazed ); } void receiveAppend( ){ QByteArray buffer( 240, Qt::Uniniti

当我重复向QDataStream对象写入原始网络字节时,QDataStream从不增加底层QByteArray的写入位置

代码如下:

QByteArray recvBuf;
int bytePosition = 0;

void init( ){
    recvBuf = QByteArray( 240 * 10, Qt::Uninitiliazed );
}

void receiveAppend( ){    
    QByteArray buffer( 240, Qt::Uninitialized );
    QDataStream datastream( recvBuf, QIODevice::WriteOnly );
    datastream.setByteOrder( QDataStream::LittleEndian );

    if( udpSocket->readDataGram( buffer.data(), buffer.size(), &ip, &port ){
        datastream.device().seek( bytePosition );
        datastream.writeRawData( buffer.data(), buffer.size() );
        bytePosition += 240;
    }
}
为什么会这样

该代码在64位Linux Mint 18上运行良好。但它在64位Windows 10上不起作用。

我将QtCreator 4.3.1与Qt5.9.1一起使用。

在使用
QDataStream
时,为什么您认为需要(或想要)在
QIODevice
中查找?只需让
QDataStream
按照。如果我误解了这个问题,很抱歉。在Linux机器上,它可以使用或不使用查找位置,而在Win10上,这两种尝试都不起作用。seek呼叫是试图让它在Win eather上工作,但没有成功。为什么这些函数在Win/Linux上的行为不同?是的,仅当您直接对
QIODevice
进行操作时才需要搜索,因此仅当更改流的位置时才需要搜索。为什么您认为在使用
QDataStream
时需要(或想要)在
QIODevice
中搜索?只需让
QDataStream
按照。如果我误解了这个问题,很抱歉。在Linux机器上,它可以使用或不使用查找位置,而在Win10上,这两种尝试都不起作用。seek呼叫是试图让它在Win eather上工作,但没有成功。为什么这些函数在Win/Linux上的行为有所不同?是的,只有在您直接对
QIODevice
进行操作时,才需要查找,所以只有在更改流的位置时才需要查找。