3

我正在尝试提出一种算法来检测何时QIODevice达到 a 的“结束”(这意味着将不再有数据可供读取)。目前,我的算法看起来像这样:

但是,文档atEnd()包含以下警告:

对于某些设备,即使有更多数据要读取,atEnd() 也可以返回 true。这种特殊情况仅适用于生成数据以直接响应您调用 read() 的设备(例如,Unix 和 OS X 上的 /dev 或 /proc 文件,或所有平台上的控制台输入 /stdin)。

这就是我的算法崩溃的地方。我的下一个想法是不断检查bytesAvailable()从常规文件读取时的值。这产生了一些非常奇怪的结果/dev/zero:在我调用之前bytesAvailable()返回,此时它表明还有字节剩余。0read(amount)16384 - amount

是否有任何“正确”的方法来确定是否仍有数据可从 a 中读取QIODevice

4

0 回答 0