QIODevice的管道数据

时间:2015-06-07 06:37:22

标签: c++ qt qt5

我有一个QIODevice从未定义的来源接收数据。 我想要做的是将所有数据转储到从QIODevice发送的文件,但如果我读取了另一个依赖于原始数据更改的处理程序。

基本上我想要的是

void piping( QIODevice* Data )
{
    if ( outgoingData )
    {
        qDebug()<<Data->readAll();
    }

    // gets nothing as readAll has already consumed all data 
    dependentOn(Data);
}

函数dependentOn不是我定义的,所以我不能改变它的定义。

1 个答案:

答案 0 :(得分:2)

qint64 QIODevice::peek(char * data, qint64 maxSize)就是你想要的。

来自文档:

  

qint64 QIODevice :: peek(char * data,qint64 maxSize)

     

从设备读取最多maxSize字节为数据,无边   效果(即,如果你在peek()之后调用read(),你会得到相同的   数据)。返回读取的字节数。如果发生错误,例如   当试图查看以WriteOnly模式打开的设备时,这个   函数返回-1。

参考:http://doc.qt.io/qt-5/qiodevice.html#peek