【发布时间】:2022-01-10 04:16:19
【问题描述】:
此方法的documentation 声明:
QByteArray QIODevice::readLine(qint64 maxSize = 0)
这是一个重载函数。
从设备中读取一行,但不超过 maxSize 个字符,并将结果作为字节数组返回。
但是,我注意到即使我们通过maxSize = 0,即。不要传递任何东西,readLine() 在行中发送几个字节。这是一个定义明确的行为吗?
此外,这是一个十年前关于同一主题的问题:QIODevice::readLine(qint64 maxSize = 0) default argument performs poorly (should be documented)。这仍然相关吗?
【问题讨论】:
-
我的猜测是,
maxSize == 0是一个特殊值,表示“无限制”。如果将 0 设为默认值意味着“根本不阅读任何内容”,那么将其设为默认值是没有意义的。不幸的是,文档没有说明这一点。 -
@IgorTandetnik 你是对的(Qt 人应该修复他们的 API 文档!)——在 qiodevice.cpp 的第 1466 行,我们有这个:
if (maxSize == 0) maxSize = MaxByteArraySize - 1; -
@JeremyFriesner 或 Igor,请将此作为答案发布,我会接受。如果你看过源代码,即使是子问题也很容易回答。
标签: c++ qt readline behavior qbytearray