QString::number(0)
和((const char*) 0)
之间的区别是什么
我想初始化一个QString
,比如phoneNumber
to null
。phoneNumber(QString::number(0))
和phoneNumber((const char*) 0)
都能工作吗?
发布于 2012-03-16 01:43:24
要创建空QString
,只需默认初始化它:
QString phoneNumber;
// or if you already have a QString variable and want to 'clear' it:
phoneNumber = QString();
请注意,QString::number(0)
绝对不是空的-它创建一个值为"0"
的QString。
您也可以使用NULL
指针初始化QString
,但我不推荐这样做,除非您正在传递一个指针,而不管它是否为NULL
(例如,它有时可能指向一个C字符串),因为这是不必要的。
您还应该了解following Qt docs
空字符串和空字符串的
区分
由于历史原因,QString
区分空字符串和空字符串。空字符串是使用QString
的默认构造函数或通过将(const char *)0
传递给构造函数初始化的字符串。空字符串是大小为0的任何字符串。空字符串始终为空,但空字符串不一定为空:
QString().isNull();//返回true QString().isEmpty();//返回true QString("").isNull();//返回false QString("").isEmpty();//返回true QString("abc").isNull();//返回false QString("abc").isEmpty();//返回false
除isNull()
之外的所有函数都将空字符串视为空字符串。例如,对于空字符串(非空指针),toAscii().constData()
返回指向'\0'
字符的指针,而QString()
比较等于QString("")
。我们建议您始终使用isEmpty()
函数并避免使用isNull()
。
发布于 2014-09-14 16:41:45
#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 Burrs solution is of course also correct... But I like the
QString::null`更多。
https://stackoverflow.com/questions/9724966
复制相似问题