我有一个QIODevice
从未定义的来源接收数据。
我想要做的是将所有数据转储到从QIODevice
发送的文件,但如果我读取了另一个依赖于原始数据更改的处理程序。
基本上我想要的是
void piping( QIODevice* Data )
{
if ( outgoingData )
{
qDebug()<<Data->readAll();
}
// gets nothing as readAll has already consumed all data
dependentOn(Data);
}
函数dependentOn
不是我定义的,所以我不能改变它的定义。
答案 0 :(得分:2)
qint64 QIODevice::peek(char * data, qint64 maxSize)
就是你想要的。
来自文档:
qint64 QIODevice :: peek(char * data,qint64 maxSize)
从设备读取最多maxSize字节为数据,无边 效果(即,如果你在peek()之后调用read(),你会得到相同的 数据)。返回读取的字节数。如果发生错误,例如 当试图查看以WriteOnly模式打开的设备时,这个 函数返回-1。