QString::number(0)和之间有什么区别((const char*) 0)?
我想初始化一个QString说phoneNumber来null.威尔phoneNumber(QString::number(0))和phoneNumber((const char*) 0)两者都有效吗?
Mic*_*urr 42
要创建null,QString只需将其初始化为:
QString phoneNumber;
// or if you already have a QString variable and want to 'clear' it:
phoneNumber = QString();
Run Code Online (Sandbox Code Playgroud)
注意,这QString::number(0)肯定不是 null - 它创建一个带有值的QString "0".
你也可以QString用NULL指针初始化它,但我不推荐它,除非你传递一个指针,无论它是否有效NULL(即,它有时可能指向一个C字符串),因为它是不必要的.
您还应该了解以下Qt文档:
空字符串和空字符串之间的区别
由于历史原因,
QString区分空字符串和空字符串.空字符串是使用QString默认构造函数或传递(const char *)0给构造函数初始化的字符串.空字符串是大小为0的任何字符串.空字符串始终为空,但空字符串不一定为null:Run Code Online (Sandbox Code Playgroud)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().
imm*_*art 15
#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();
}
Run Code Online (Sandbox Code Playgroud)
输出:
true
""
Run Code Online (Sandbox Code Playgroud)
Michael Burr的解决方案当然也是正确的...但我QString::null更喜欢.
| 归档时间: |
|
| 查看次数: |
30669 次 |
| 最近记录: |