Qt之Qstring元素访问

和之前讲述的访问QByteArray类对象中某个元素的方式类似,访问QString 类对象方式的某个元素采用类似的4种主要方式,分别为、at()、data\[和 constData\[\]。其中,\[\]和data\[\]方式为可读可写,at()和 constData\[\]方式仅为可读。如果只是进行读操作,则采用at()和constData\[\]方式的访问速度最快,因为避免了复制操作。at()方式比 operator\[\]()方式快,因为前者不会进行深度复制操作。总之,如果仅仅是读QString类对象中的字符,那么调用 at()函数更快。函数at()的原型声明如下:QChar QString::at(int position);

返回position索引处的字符,如果 position 的值超过字符串的长度就返回0。比如:

const QString string("abcdefgh");

QChar ch=string.at(4);

//ch ='e'

QString str;

for(int i= 0;i< str.size();++i){

if(str.at(i)>= QChar('a')&&str.at(i)<= QChar('f'))

qDebug()<<"Found character in rangea-f";

}

更直观的方法是用操作符\[\],它们的声明形式如下:

const QChar operator\[\](int position)const;

const QChar operator\[\](uint position)const;

事实上,通过[操作符得到的字符可以被修改,要用到另外两个重载的[操作符:

QCharRef operator\[\](int position);

QCharRef operator\[\](uint position);

返回的 QCharRef 类是一个辅助类,对这个类的对象进行修改会修改到原字符串。下列代码演示了data\[\]的使用:

QString str ="World";

int n = str.size();//n==5

str.data()0; //returns'W'

str.data()4;//returns'd'

赋值运算

通过赋值运算符(=)可以给 QString类对象赋值,比如:QString str ="abc";

获取长度

QString类的成员函数count()、size()和 length()都会返回字符串长度,这3个函数是相同的,但是要注意,字符串中如果有汉字,那么一个汉字只算一个字符。下列代码演示了这3个函数的使用:

QString str1="NI好"

N=strl.count()//N=3

N=strl.size()//N=3

N=str1.length()//N=3

字母大小写的转换

QString 类的成员函数toUpper()会将字符串内的字母全部转换为大写形式,toLower()则会将字符串内的字母全部转换为小写形式,比如:

QString str1="Hello,World",str2;

str2=str1.toUpper();//str1="HELLO,WORLD"

str2=strl.tolower();//str1-"hello,world"

移除字符

成员函数remove()可以移除字符串中一个或多个字符,该函数的原型声明如下:

QString aremove(int position,int n);

其中,参数 position 表示要被移除字符的起始索引位置;n表示要移除字符的个数。该函数返回的是移除字符后字符串的引用。

QString test="hello,china";

QString tmp=test.remove(2,4);//从索引值为2的字符开始,移除4个字符

qDebug()<<"test="<< test;//输出hechina

qDebug()<<"tmp ="<<tmp;//输出hechina

又比如:

QString s ="Montreal";

s.remove(l,4);//s =="Meal"

添加字符串

QString类的成员函数 append()在字符串的后面添加字符串,而成员函数 prepend()在字符串的前面添加字符串,比如:

QString str1="卖",str2="拐";

QString str3=strl;

str1.append(str2);//str1="卖拐"

str3.prepend(str2);//str3="拐卖"

与 Java 语言中的 String 类类似,QString类也重载了+和+=运算符。这两个运算符可以把两个字符串连接到一起,这和 Java语言中 String类的操作一样。QString类可以自动对占用内存空间进行扩充,因而这种连接操作非常迅速。这两个运算符的使用方法如下

QString str="User:";

str+=userName+"/n";

相关推荐
大数据张老师1 天前
Typora 导出 Word 模版操作手册
开发语言·c#·word·typora
略略略咯咯1 天前
stream流浅拷贝
开发语言·python
long3161 天前
Java 团队入门到精通学习资料
java·开发语言
城管不管1 天前
rabbitmq如何保证消息不丢失?解决方案又是什么?
开发语言·ai·面试·职场和发展·rabbitmq·php·agent
程序员良辰1 天前
【TongWeb7】启动接近两分钟问题排查
java·开发语言·中间件
深色風信子1 天前
Kotlin Bytedeco OpenCV 图像图像58 无缝克隆
开发语言·opencv·kotlin·bytedeco
朝阳391 天前
react19【系列实用教程】实用组件封装
开发语言·前端·javascript
我是苏苏1 天前
C#基础:使用System.Speech.Synthesis离线播放/朗读文字内容
开发语言·c#
Patrick在香港1 天前
Python依赖管理从踩坑到选型:pip/poetry/uv四种方案全面实测
开发语言·python·数据分析·scikit-learn·ai编程·pip·uv
我命由我123451 天前
Kotlin 面向对象 - 枚举排序
android·java·开发语言·java-ee·kotlin·android studio·android-studio