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

Lil*_*aru 6 c++ qt

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

代码是:

#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());
}
Run Code Online (Sandbox Code Playgroud)

哪个性能会更好?我认为内存消耗也不同.QVariant(number).toString()意味着它将QVariant存储在堆栈中.不确定QString :: number(),它不应该只是调用函数(当然,函数有一个QString返回所以它也被分配在堆栈上并占用该空间并且该操作被分配和取消分配)?无论如何,sizeof()为QVariant提供了16个字节,为QString提供了4个字节.

Sin*_*all 4

当然第二种变体更好。

QString::number()是一个返回所需字符串的静态函数。当您使用时,QVariant(number).toString();您首先创建一个QVariant,然后将其转换为所需的字符串,因此您创建了一个额外且不必要的类型变量QVariant

此外,您不需要将数字转换为字符串即可使用qDebug. qDebug() << 42;工作正常。