QT5开发||06、QT5常见类(1)—字符串类

摘要

相比于C++提供的两种字符串:C风格的char字符串和字符串类string,qt提供的字符串类QString的功能更为强大。
QString类保存16位Unicode值,提供了丰富的操作、查询和转换等函数。该类还进行使用了隐式共享、高效的内存分
配策略等多方面的优化。

字符串类

1、操作字符串

字符串有如下几个操作符。

(1) QString提供了一个二元的“+” 操作符用于组合两个字符串,并提供了一个“+=” 操作符用于将一个字符串追加到另一

个字符串的末尾,例如:

QString str1 = "Welcome ";
str1=str1+"to you! ";
//str1=" Welcome to you!”
QString str2="Hello, ";
str2+="World! ";
//str2="Hello,World!”

(2) QString::append()函数具有与“+=” 操作符同样的功能,实现在一个字符串的末尾追加另一个字符串,例如:

QString str1 = "Welcome ";
QString str2 = "to ";
str1.append(str2);
//str1=" Welcome to" 
str1.append("you! ");
//str1="Welcome to you! "

(3) 组合字符串的另一个函数是QString::sprint(), 此函数支持的格式定义符和C++库中的函数sprint()定义的一样。

例如:

QString str;
str.sprint("%S"," Welcome ");
//str="Welcome "
str.sprintf("%s" ," to you! ");
//str="to you!”
strsprintf("%s %sS"," Welcome ""to you! "); //str=" Welcome to you!'

(4) Qt还提供了另一种方便的字符串组合方式,使用QString::arg()函数。

此函数的重载可以处理很多的数据类型。此外,一些重载具有额外的参数对字段的宽度、数字基数或者浮点数精度进行

控制。通常,相对于函数QString::sprintf(),函数QString::arg()是一个比较好的解决方案,因为它类型安全,完全支持

Unicode,并且允许改变"%n"参数的顺序。例如:

QString str;
str=QString("%I was born in %2.").arg("Pudding").arg(2000);//str="Pudding was born in 2000."

(5) QString也提供了一些其他组合字符串的方法,包括如下几种。

①insert()函数:在原字符串特定的位置插入另一个字符串;
②prepend()函数:在原字符串的开头插入另一个字符串;
③replace()函数:用指定的字符串代替原字符串中的某些字符。

(6)很多时候去掉一个字符串两端的空白字符(包括回车字符“\n” 、换行字符“\r” 、制表符“\t” 和空格字符“”等)非常有用。

如获取用户输入的账号时。

①QString:trimmed()函数:移除字符串两端的空白字符;
②QString::simplified()函数:移除字符串两端的空白字符,使用单个空格字符“”代替字符串中出现的空白字符。

例如:

QString str=" Welcome \t to In you!";
str=str.trimmed();   //str=" Welcome It to \n you! "

2、查询“操作字符串”数据

(1)函数QString::startsWith()判断一个字符串是否以某个字符串开头。此函数具有两个参数,第一个参数指定了一个字

符串,第二个参数指定是否大小写敏感(默认情况下,是大小写敏感的),例如:

QString str="Welcome to you! ";
str.startsWith("Welcome",Qt::CaseSensitive); //返回true;
str.startsWith("you",Qt::CaseSensitive);  //返回false;

(2)函数QString::endsWith()类似于QString:startsWith(),此函数判断一个字符串是否以某个字符串结尾。

(3)函数QString::contains()判断一个指定的字符串是否出现过,例如:

QString str=" Welcome to you! ";
str.contains("Welcome",Qt:CaseSensitive);//返回true;

(4) 比较两个字符串也是经常使用的功能,QString提供了多种比较手段。

①operator<(const QString&):比较- 一个字符串是否小于另一个字符串,如果是,则返回true。
②operator<=(const QString&):比较-一个字符串是否小于等于另一个字符串,如果是,则返回true。
③operator==(const QString&):比较两个字符串是否相等,如果相等,则返回true。
④operator>=(const QString&):比较一个字符串是否大于等于另一个字符串,如果是,则返回true。
⑤localeAwareCompare(const QString&,const QString&):静态函数,比较前后两个字符串,如果小于则返回负整数值;如果等于则返回0;如果大于则返回正整数值。
⑥compare(const QString&,const QString&,Qt::CaseSensitivity):该函数可以指定是否进行大小写的比较,而大小写的比较是完全基于字符的Unicode编码值的,而且是非常快的,返回值类似于localeAwareCompare()函数。

3、字符串的转换

(1) QString:tolnt()函数将字 符串转换为整型数值。

类似的函数还有toDouble()、toFloat()、 toLong()、 toLongLong()等。 下面举个例子说明其用法:

QString str="125";
bool ok;
int hex=str.tolnt(&ok,16);	//ok=true,hex= -293
int dec=str.tolnt(&ok, 10);	//ok=true,dec=125

(2)QString提供的字符编码集的转换函数将会返回一个constchar*类型版本的QByteArray,即构造函数

QByteArray(const char*)构造的QByteArray对象。QByteArray类具有一个字节数组,它既可以存储原始字节(raw

bytes),也可以存储传统的以“\0”结 尾的8位的字符串。

在Qt中,使用QByteArray比使用constchar*更方便,且QByteArray也 支持隐式共享。转换函数有以下几种。

①toAscii():返回一个ASCII编码的8位字符串。
②toLatin1():返回一个Latin-1 (ISO8859-1) 编码的8位字符串。
③toUtf8():返回一个UTF-8编码的8位字符串(UTF-8是 ASCII码的超级,它支持整个Unicode字符集)
④toLocal8Bit():返回一个系统本地(locale) 编码的8位字符串。

下面举例说明其用法:

QString str=" Welcome to you! ";
QByteArray ba=str.toAscii();
qDebug()<<ba;
ba.append("Hello,World! ");
qDebug()<<ba.data();

一个NULL字符串就是使用QString的默认构造函数或者使用“ (const char*)0"作为参数的构造函数创建的QString字符串

对象;而一个空字符串是一个大小为0的字符串。一个NULL字符串一定是一个空字符串,而一个空字符串未必是一个

NULL字符串。例如:


QString().isNull();		//结果为true
QString().isEmpty();	//结果为true
QString(").isNul();		//结果为false
QString(").isEmpty();	//结果为true

至此,字符串类的常见类型和具体使用就介绍到此!

猜你喜欢

转载自blog.csdn.net/weixin_43335226/article/details/106980102
Qt5