字符串类(QString):
在Qt官方文档中是这样描述QString的:The QString class provides a Unicode character string.
我们可以将做C++中的string,但QString提供了更多有用的操作
在使用QString时需要包含头文件 #include <QString>
QString的常见操作:
组合字符串:
1.使用二元操作符"+"组合两个字符串
QString str1= "Hello", str2("World"); QString str3 = str1 + str2 + "!"; qDebug() << str3;
2.使用"+="操作符
QString str1 = "Hello"; str1 += " World!"; qDebug() << str1;
3.也可以使用QString::append()函数实现在一个字符串末尾添加一个字符串
QString str1 = "Hello"; str1.append(" World!"); qDebug() << str1;
4.使用QString::sprintf()也可以组合字符串,其支持的格式与C++中sprintf()函数定义的一样
QString str1; str1.sprintf("%s", "Hello "); str1.sprintf("%s %s", "Hello ", "World!"); qDebug() << str1;
5.相比于QString::sprintf(),QString::arg()或许是个更好的选择,该函数的重载可以处理很
多种数据类型,此外还提供额外的参数对字段宽度、数字基数、浮点数精度进行控制,且它类型
安全,完全支持Unicode,并且允许改变"%n"参数的顺序。
QString str1; str1 = QString("%1 is a %2.").arg("Bob").arg("boy"); qDebug() << str1;
除了组合字符串之外,还提供了很多其他操作:
QString::insert():在指定位置后插入一个字符串
QString::prepend():在源字符串开头插入一个字符串
QString::replace(): 用指定字符串代替源字符串中的指定内容
QString::trimmed():删除字符串两端的空白字符
QString::simplified(): 删除字符串两端的空白字符,并用单个空白字符代替字符串中出现的空白字符
注意:前面三个函数会对源字符串本身做出更改,而后两个函数返回的是源字符串被操作后所
得内容的一个新的字符串,源字符串本身不会被修改
QString str1 = " AAA BBB CCC "; qDebug() << str1; str1.insert(2, "ZZZ"); qDebug() << str1; str1.prepend("DDD"); qDebug() << str1; str1.replace("AAA", "111"); qDebug() << str1; str1 = str1.trimmed(); qDebug() << str1; str1 = str1.simplified(); qDebug() << str1; /* 程序输出: " AAA BBB CCC " " ZZZAAA BBB CCC " "DDD ZZZAAA BBB CCC " "DDD ZZZ111 BBB CCC " "DDD ZZZ111 BBB CCC" "DDD ZZZ111 BBB CCC" */
查询字符串数据:
1.QString::startsWith()用于判断字符串是否由指定字符串开头,可以设置是否大小写敏感(默认为大小写敏感)
2.QString::endsWith()用于判断字符串是否由指定字符串结尾,可以设置是否大小写敏感(默认为大小写敏感)
3.QString::contains()用于判断字符串内是否含有指定子串
QString str1 = "Hello World!"; if (str1.startsWith("Hello", Qt::CaseSensitive)) qDebug() << "str1 start with Hello"; // 设为大小写不敏感 if (str1.endsWith("world!", Qt::CaseInsensitive)) qDebug() << "str1 end with world"; if (str1.contains("Hello")) qDebug() << "str1 contains Hello"; /* 程序输出: str1 start with Hello str1 end with world str1 contains Hello */
比较两个字符串可以使用:
1.运算符:<、>、==、>=、<=
2.QString::localeAwareCompare(const QString &str1, const QString &str2);
比较两个字符串,若str1大于str2,返回正整数,若str1小于str2,返回负整数,若str1等于str2,返回0
3.QString::compare(const QString &str1, const QString &str2, Qt::CaseSensitive/Qt::CaseInsensitive);
与QString::localeAwareCompare()功能相似,但却可以设置是否大小写敏感(默认敏感)
QString str1 = "AAA", str2 = "BBB", str3 = "Aaa"; if (str1 <= str2) qDebug() << str1 << "<=" << str2; else qDebug() << str1 << ">" << str2; int result = QString::compare(str1, str3, Qt::CaseInsensitive); if (result > 0) qDebug() << str1 << ">" << str3; else if (result < 0) qDebug() << str1 << "<" << str3; else qDebug() << str1 << "=" << str3; /* *输出结果: * "AAA" <= "BBB" * "AAA" = "Aaa" */
将QString转化为其他类型(此类函数有很多,下面只列出常用的几个,若有需要,可以查看Qt文档):
QString::toInt()
QString::toDouble()
QString::toFloat()
QString::toLong()
QString::toLongLong()
注意:
QString字符串的Empty与NULL,即默认构造函数创建QString与通过QString("")构造时
QString str1, str2(""); if (str1.isEmpty()) qDebug() << "str1 is Empty"; else qDebug() << "str1 is not Empty"; if (str1.isNull()) qDebug() << "str1 is NULL"; else qDebug() << "str1 is not NULL"; if (str2.isEmpty()) qDebug() << "str2 is Empty"; else qDebug() << "str2 is not Empty"; if (str2.isNull()) qDebug() << "str2 is NULL"; else qDebug() << "str2 is not NULL"; /* 输出结果: str1 is Empty str1 is NULL str2 is Empty str2 is not NULL */
除了上面介绍的函数外,QString还有很多功能强大的函数,可以在Qt文档或QCreator的Help中查看