Quelle est la différence entre QString::number(0)
y ((const char*) 0)
?
Je veux initialiser un QString
dites phoneNumber
a null
. Will phoneNumber(QString::number(0))
y phoneNumber((const char*) 0)
les deux fonctionnent ?
Quelle est la différence entre QString::number(0)
y ((const char*) 0)
?
Je veux initialiser un QString
dites phoneNumber
a null
. Will phoneNumber(QString::number(0))
y phoneNumber((const char*) 0)
les deux fonctionnent ?
Pour créer une valeur nulle QString
juste l'initialiser par défaut :
QString phoneNumber;
// or if you already have a QString variable and want to 'clear' it:
phoneNumber = QString();
Notez que QString::number(0)
est décidément pas null - il crée un QString avec la valeur "0"
.
Vous pouvez également initialiser le QString
avec un NULL
mais je ne le recommanderais pas à moins que vous ne passiez un pointeur indépendamment du fait qu'il s'agisse de NULL
ou non (c'est-à-dire qu'il pourrait parfois pointer vers une chaîne de caractères C) puisque c'est inutile.
Vous devez également comprendre le en suivant les documents de Qt :
Distinction entre les chaînes de caractères nulles et vides
Pour des raisons historiques,
QString
fait la distinction entre une chaîne nulle et une chaîne vide. Une chaîne nulle est une chaîne qui est initialisée en utilisantQString
par défaut ou en passant(const char *)0
au constructeur. Une chaîne vide est une chaîne de taille 0. Une chaîne nulle est toujours vide, mais une chaîne vide n'est pas nécessairement nulle :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
Toutes les fonctions sauf
isNull()
traitent les chaînes nulles de la même manière que les vides. Par exemple,toAscii().constData()
renvoie un pointeur vers un'\0'
pour une chaîne de caractères nulle (et non un pointeur nul), etQString()
est égal àQString("")
. Nous vous recommandons de toujours utiliser leisEmpty()
et éviterisNull()
.
#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();
}
Sortie :
true
""
La solution de Michael Burr est bien sûr aussi correcte... Mais j'aime bien la QString::null
plus.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.