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 文字列と空の文字列の違い
歴史的な理由から、
QStringnull 文字列と空の文字列を区別します。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 falseNULL 文字列を除くすべての関数
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もっと気に入っています。