QString::number(0)
和((const char*) 0)
之间的区别是什么?
我想初始化QString
说phoneNumber
到null
。 phoneNumber(QString::number(0))
和phoneNumber((const char*) 0)
都会有效吗?
答案 0 :(得分:40)
要创建null QString
,只需将其初始化:
QString phoneNumber;
// or if you already have a QString variable and want to 'clear' it:
phoneNumber = QString();
请注意,QString::number(0)
肯定不 null - 它会创建一个值为"0"
的QString。
您还可以使用QString
指针初始化NULL
,但除非您传递指针,否则我不会推荐它,无论它是否为NULL
(即,它有时可能指向C字符串),因为它是不必要的。
您还应该了解following Qt docs:
空字符串和空字符串之间的区别
由于历史原因,
QString
区分空字符串 和一个空字符串。空字符串是初始化的字符串 使用QString
的默认构造函数或传递(const char *)0
到构造函数。空字符串是大小为0的任何字符串。为null string始终为空,但空字符串不一定为null:QString().isNull(); // returns true QString().isEmpty(); // returns true QString("").isNull(); // returns false QString("").isEmpty(); // returns true QString("abc").isNull(); // returns false QString("abc").isEmpty(); // returns false
除
isNull()
之外的所有函数都将空字符串视为空 字符串。例如,toAscii().constData()
返回指向a的指针 空字符串的'\0'
字符(不是空指针),和QString()
比较等于QString("")
。我们建议你 始终使用isEmpty()
功能并避免使用isNull()
。
答案 1 :(得分:14)
#include <QCoreApplication>
#include <QString>
#include <QDebug>
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
QString name(QString::null);
// or QString name = QString::null;
// or QString name;
qDebug() << name.isNull();
qDebug() << name;
return a.exec();
}
输出:
true
""
Michael Burr的解决方案当然也是正确的......但我更喜欢QString::null
。