是什麼QString::number(0)
和((const char*) 0)
之間的區別?如何初始化一個QString爲null?
我想初始化一個QString
,例如phoneNumber
到null
。請問phoneNumber(QString::number(0))
和phoneNumber((const char*) 0)
都可以工作嗎?
是什麼QString::number(0)
和((const char*) 0)
之間的區別?如何初始化一個QString爲null?
我想初始化一個QString
,例如phoneNumber
到null
。請問phoneNumber(QString::number(0))
和phoneNumber((const char*) 0)
都可以工作嗎?
要創建一個空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(); // 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()
返回指向空字符串(不是空指針)的'\0'
字符的指針,並且QString()
等於QString("")
。我們建議您 始終使用isEmpty()
功能,避免isNull()
。
#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
""
邁克爾Burr`s解決方法當然也是正確的。但我喜歡QString::null
更多。
邁克爾感謝您的答覆,但有一點我不清楚 - 不str.clear()離開空字符串或者廢止的一個。如果有空有一種方法來取消它? – yatsa 2012-03-30 13:31:26
'的QString ::明確()'設置字符串爲空(即str.clear後'()',str.isNull()將返回TRUE;)。 – 2012-03-30 15:06:44