QString::number(0)
とはどう違い((const char*) 0)
ますか?
QString
への発言phoneNumber
を初期化したいnull
。両方とも機能しますphoneNumber(QString::number(0))
か?phoneNumber((const char*) 0)
null を作成するには、QString
デフォルトで初期化します。
QString phoneNumber;
// or if you already have a QString variable and want to 'clear' it:
phoneNumber = QString();
QString::number(0)
明らかに null ではないことに注意してください。値を持つ QString を作成します"0"
。
QString
をポインタで初期化することもできますが、不要であるNULL
ため、ポインタであるかどうかに関係NULL
なく (つまり、C 文字列を指す場合がある) ポインタを渡す場合を除き、お勧めしません。
次の Qt ドキュメントも理解しておく必要があります。
Null 文字列と空の文字列の違い
歴史的な理由から、
QString
null 文字列と空の文字列を区別します。null 文字列は、QString
のデフォルト コンストラクタを使用するか(const char *)0
、コンストラクタに渡すことによって初期化される文字列です。空の文字列は、サイズが 0 の任意の文字列です。null 文字列は常に空ですが、空の文字列が必ずしも 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
NULL 文字列を除くすべての関数
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
""
もちろん、Michael Burr のソリューションも正しいですが、私はQString::null
もっと気に入っています。