繁体   English   中英

Qt:将数字转换为QString,QVariant或QString :: number更好

[英]Qt: Which is better for transforming a number to QString, QVariant or QString::number

我只是好奇。 比方说,我需要在控制台中输出一个数字。

代码是:

#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类型变量。

此外,您不需要将数字转换为字符串以使用qDebug输出它。 qDebug() << 42; 工作良好。

为什么不简单

qDebug << number

如果在quint8情况下它输出字符而不是数字本身,那么只是演员 -

qDebug << static_cast<int>(number);

或者(这个有点难以理解,查找整体促销)

qDebug << +number;

我打赌,与你的任何一个建议相比,这个选项会更好(性能方面)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM