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";

相关推荐
数据狐(Datafox)6 分钟前
1688商品列表API接口解析(附 JSON 样例)
java·开发语言·数据库·爬虫·json
小灰灰搞电子37 分钟前
Rust Once 、OnceLock、LazyLock 一次性初始化详解
开发语言·后端·rust
hqyjzsb1 小时前
规划工商管理大学成长:搭建四层能力体系,重视高阶的 AI 能力建设
开发语言·人工智能·python·microsoft·职场和发展·数据挖掘·业界资讯
for_ever_love__1 小时前
爬虫项目: 获取高分电影的数据总结
开发语言·python·学习
weixin_307779131 小时前
C++代码实现MATLAB中的ode23t函数功能
开发语言·c++·算法·matlab
君顾12 小时前
24小时自助健身房系统开发实战与完整指南
java·开发语言·健身房
syagain_zsx2 小时前
算法基础篇 · 02 高精度(C++ 题解)
开发语言·c++·学习·高精度
白远山2 小时前
无人自助健身平台搭建:从架构设计到设备联动的完整实战
java·开发语言·架构·需求分析
君顾13 小时前
本地电竞服务交易系统架构设计与实战:从同城服务撮合到订单履约
java·开发语言·电竞
峥嵘life3 小时前
2026免费的 opencode 使用分享:Windows端 + 服务器CLI 实战总结
android·大数据·开发语言