我正在尝试使用QIODevice::readLine()
。我查看了两个版本 - 一个返回QByteArray
:
QByteArray buffer = iodevice->readLine()
和一个读取char *缓冲区:
char buffer[SIZE];
qint64 used;
used = iodevice->readline(buffer, SIZE);
我需要读取一行,检测错误并将其作为QString进行操作。
我应该使用这两个重载版本中的哪一个来使其简单有效?
到目前为止我所知道的:
=
运算符答案 0 :(得分:2)
没有更好的方法,这取决于我猜的应用程序。如果此操作的性能对您的应用程序至关重要,则可以简单地对两者进行分析。
考虑到使用QByteArray,你不是“来回”分配内存。 QByteArray实现了隐式共享,因此使用operator =快速有效。与char *完全相同,但也许更简单。
QString既包含QByteArray的ctor,也包含char *,因此完全相同。
编辑:为了澄清关于按值返回QByteArray时副本的要点,请考虑是,可能会创建两个对象,但只会创建浅副本。因此这是有效的。您可能希望阅读this,这非常重要。另外,请考虑使用closer look: - )