QIODevice::readLine(qint64 maxSize = 0) 如何工作?

How does QIODevice::readLine(qint64 maxSize = 0) works?

该方法的documentation说明:

QByteArray QIODevice::readLine(qint64 maxSize = 0)
This is an overloaded function.
Reads a line from the device, but no more than maxSize characters, and returns the result as a byte array.

但是,我注意到即使我们通过 maxSize = 0,即。不要传递任何东西,readLine() 在行中发送几个字节。这是定义明确的行为吗?

此外,这是关于同一主题的十年前的一期:QIODevice::readLine(qint64 maxSize = 0) default argument performs poorly (should be documented)。这仍然相关吗?

Qt API 文档中没有提到,但是作为 maxSize 参数传入值 0 被视为具有“尽可能多的字节”的特殊含义。在 Qt 中的 qiodevice.cpp 源文件的第 1466 行可以看到该意图的证据:

if (maxSize == 0) maxSize = MaxByteArraySize - 1;