gpt4 book ai didi

c++ - 如何确定用于读取的 QIODevice 的总大小?

转载 作者:太空宇宙 更新时间:2023-11-04 11:30:02 30 4
gpt4 key购买 nike

我正在使用 qt 5.3。

我有一个很大的东西写入 QIODevice 以供读取。我想要一个代理来获取数据,同时让 QIODevice 中的数据可供其他东西读取。因此,如果我调用 readAll(),我将在代理中获得一切正常,但其他读取器无法获得任何数据。

我想我应该使用 peek() 但这似乎需要最大尺寸。我尝试传递 size() 或 bytesAvailable() 但他们没有给我真正的大小。他们返回的缓冲区大小可能是一些奇怪的值,如 3287。但我的数据有 1081530 字节那么大。

如何获取 QIODevice 的真实大小以供读取?

编辑:我上面提到的 QIODevice 实际上是 QNetworkReply。我想创建一个代理来观察我的程序的请求和响应数据,并使用 QWebView 访问一些 flash 游戏。我实现了我的 QNetworkAccessManager 子类的 createRequest,我想分析的是我通过 createRequest 回复的 finished() 信号捕获的。

Edit2:我注意到这个 QIODevice 是连续的,所以大小未知。但是如何在不清除数据的情况下读取数据呢?

最佳答案

可以使用QIODevice::seek,然后再次读取数据
来自 seek 文档:

For random-access devices, this function sets the current position to pos, returning true on success, or false if an error occurred. For sequential devices, the default behavior is to do nothing and return false.

关于c++ - 如何确定用于读取的 QIODevice 的总大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25137660/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com