我只是好奇。比方说,我需要在控制台中输出一个数字。
代码是:
#include <QDebug>
#include <QVariant>
#include <QString>
void displayNumber(quint8 number) {
qDebug() << QVariant(number).toString();
qDebug() << QString::number(number);
//or for example
// QLabel label;
// label.setText(QString::number(number));
//or
// label.setText(QVariant(number).toString());
}
哪个性能更好?我认为内存消耗也不同。
QVariant(number).toString() 意味着它在堆栈中存储 QVariant。不确定 QString::number() ,它不应该只调用该函数吗(当然,该函数有一个 QString 返回,因此它也在堆栈上分配,并占用该空间以及分配和取消分配它的操作)?
不管怎样,sizeof() 为 QVariant 提供了 16 个字节,为 QString 提供了 4 个字节。
当然第二种变体更好。
QString::number()
是一个返回所需字符串的静态函数。当你使用QVariant(number).toString();
你首先创建一个QVariant
,而不是将其转换为所需的字符串,因此您创建了一个额外且不必要的变量QVariant
type.
此外,您不需要将数字转换为字符串即可输出qDebug
. qDebug() << 42;
工作正常。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)