我有一个QIODevice,它从一个未定义的来源接收数据。我想要做的是将所有数据转储到一个从QIODevice发送的文件中,但是如果我读取了该文件,那么另一个依赖于原始数据的处理程序会发生变化。
基本上我想要的是
void piping( QIODevice* Data )
{
if ( outgoingData )
{
qDebug()<<Data->readAll();
}
// gets nothing as readAll has already consumed all data
dependentOn(Data);
}函数dependentOn不是我定义的,所以我不能更改它的定义。
发布于 2015-06-07 21:37:29
qint64 QIODevice::peek(char * data, qint64 maxSize)就是你想要的。
从文档中:
qint64 QIODevice::peek(字符*数据,qint64 maxSize)
从设备读取最多maxSize字节到数据中,没有副作用(即,如果您在peek()之后调用read(),您将获得相同的数据)。返回读取的字节数。如果发生错误,例如在尝试查看以WriteOnly模式打开的设备时,此函数将返回-1。
参考:http://doc.qt.io/qt-5/qiodevice.html#peek
https://stackoverflow.com/questions/30690793
复制相似问题