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 range[a-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";

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/700663.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【力扣白嫖日记】176.第二高的薪水

前言 练习sql语句&#xff0c;所有题目来自于力扣&#xff08;https://leetcode.cn/problemset/database/&#xff09;的免费数据库练习题。终于把所有的简单题刷完&#xff0c;进入第一道中等题。 今日题目&#xff1a; 176.第二高的薪水 表&#xff1a;Employee 列名类型…

CSS 的圆角矩形

CSS 的圆角矩形 通过 border-radius 属性使矩形边框带圆角效果成为圆角矩形 语法&#xff1a;border-radius: length; length 是内切圆的半径&#xff0c;其数值越大, 弧线越明显 border-radius 属性值描述length定义圆角的形状%以百分比定义圆角的形状 生成圆形 让 border-…

村镇医院医疗中心污废水如何处理达标

污废水处理是村镇医院医疗中心运营中不可忽视的重要环节。如何有效处理污废水&#xff0c;使其达到相关标准&#xff0c;是保障医疗中心环境卫生的关键之一。 首先&#xff0c;村镇医院医疗中心应建立科学的废水处理系统。该系统应包括预处理、初级处理、中级处理和高级处理等环…

整型数组按个位值排序/最低位排序(C语言)

题目来自于博主算法大师的专栏&#xff1a;最新华为OD机试C卷AB卷OJ&#xff08;CJavaJSPy&#xff09; https://blog.csdn.net/banxia_frontend/category_12225173.html 题目描述 给定一个非空数组&#xff08;列表&#xff09;&#xff0c;其元素数据类型为整型&#xff0c…

JVM(1)

JVM简介 JVM是Java Virtual Machine的简称,意为Java虚拟机. 在java中,它归属于jre(java运行时环境), 而jre归属于jdk(java开发工具包). 虚拟机是指通过软件模拟的具有完整硬件功能的,运行在一个完全隔离的环境中的完整计算机系统. 常见的虚拟机:JVM, VMwave, VirtualBox. J…

2024 Impeller:快速了解 Flutter 的渲染引擎的优势

参考原文 &#xff1a;https://tomicriedel.medium.com/understanding-impeller-a-deep-dive-into-flutters-rendering-engine-ba96db0c9614 最近&#xff0c;在 Flutter 2024 路线规划里明确提出了&#xff0c;今年 Flutter Team 将计划删除 iOS 上的 Skia 的支持&#xff0c;…

python 打包 apk

转换之前python代码需要使用指定的框架才能转换&#xff0c;列如&#xff1a;kivy from kivy.app import App from kivy.uix.boxlayout import BoxLayout from kivy.uix.button import Buttonimport time import pyautogui import threadingstatus False# 这是一个将被线程执…

七种设计原则

1.开闭原则&#xff1a;&#xff08;面向对象编程中&#xff0c;最核心最基础的一个原则&#xff0c;所有设计模式都是围绕这一原则去实践&#xff09;对原有的类不做修改&#xff0c;只做扩展 2.单一职责&#xff1a;说的是类的职责要单子。也就是说一个类最好只负责一方面的…

踩坑:SpringBoot连接Mysql的时区报错

解决方法&#xff1a;1.修改时区2.修改连接版本 目录 1.修改时区 2.切换版本 1.修改时区 查看mysql的默认时区 SELECT global.time_zone AS Global Time Zone, session.time_zone AS Session Time Zone; 查看mysqk的默认是时区返回两个结果 Global Time Zone:表示Mysql…

【数据结构】C语言实现二叉树的相关操作

树 定义 树&#xff08;Tree&#xff09;是 n (n > 0) 个结点的有限集 若 n 0&#xff0c;称为空树 若 n > 0&#xff0c;则它满足如下两个条件&#xff1a; 有且仅有一个特定的称为根&#xff08;Root&#xff09;的结点其余结点可分为 m(m>0) 个互不相交的有限…

剪辑视频调色怎么让画质变得清晰 视频剪辑调色技巧有哪些方面 剪辑视频免费的软件有哪些 会声会影调色在哪里 会声会影模板素材

视频调色的作用有很多&#xff0c;除了进行风格化剪辑以外&#xff0c;还可以让作品的画质变得清晰。通过调色来增强画面的清晰度&#xff0c;在观感上也会显得十分自然。视频调色的技巧有很多&#xff0c;并且原理大都十分简单。有关剪辑视频调色怎么让画质变得清晰&#xff0…

Mybatis总结--传参二

#叫做占位符 Mybatis是封装的JDBC 增强版 内部还是用的jdbc 每遇到一个#号 这里就会变为&#xff1f;占位符 一个#{}就是对应一个问号 一个占位符 用这个对象执行sql语句没有sql注入的风险 八、多个参数-使用Param 当 Dao 接口方法有多个参数&#xff0c;需要通过名称使…

Vue3_基础使用_4_路由器Router

概念&#xff1a; 路由&#xff1a;是一个key-value的对应关系叫路由。 路由器&#xff1a;管理多个路由的集合或者叫设备称为路由器。 由于现在组件替代了以前的mvc中的cshtml, 组件的菜单切换也不用我手动去写&#xff0c;vue给我们通过配置完成。 实现简单的路由跳转&…

vue3组件间的通信,通过props,emit,provide和inject把数据传递N个层级,expose和ref实现父组件调用子组件方法

文章目录 一、父组件数据传递N个层级的子组件vue3 provide 与 injectA组件名称 app.vueB组件名称 provideB.vueC组件名称 provideCSetup.vue 二、使用v-model指令实现父子组件的双向绑定父组件名称 app.vue子组件名称 v-modelSetup.vue 三、父组件props向子组件传值子组件 prop…

VIO第3讲:基于优化的IMU与视觉信息融合之预积分残差雅可比推导

VIO第3讲&#xff1a;基于优化的IMU与视觉信息融合之预积分残差雅可比推导 文章目录 VIO第3讲&#xff1a;基于优化的IMU与视觉信息融合之预积分残差雅可比推导4 IMU 预积分残差的雅克比4.1 预积分残差4.2 残差对两个关键帧i、j状态量的雅可比① 速度误差 r v r_{v} rv​对i时刻…

高和汽车停工停产,创始人丁磊终于发话了!2024的冷门项目,投入小,但是真的很赚钱!

高和创始人丁磊站在停产停工的工厂呢&#xff0c; 环顾冷清❄️的四周&#xff0c;眉头紧锁&#x1f623;&#xff0c; 停顿片刻后对旁边同样愁眉苦脸的员工说道&#xff1a; 非常抱歉&#xff0c;因为经营的失误&#xff0c;面临了停产停工的窘境。 在互联网&#x1f517;、物…

力扣20.有效的括号

题目链接 这个学过数据结构栈的应用的基本上都会 就是把字符串进栈&#xff0c;如果是左边的括号&#xff0c;无脑入栈&#xff0c; 如果是右边的括号&#xff0c;那得看栈顶是不是和它匹配&#xff0c;如果匹配的话&#xff0c;一起出栈&#xff0c;如果不匹配&#xff0c;就先…

R语言【raster】——rasterize():栅格化点、线、面

Package raster version 3.6-27 Description 将与“对象”类型空间数据(点、线、多边形)相关的值转移到栅格单元。 对于多边形&#xff0c;如果多边形覆盖栅格单元的中心&#xff0c;则传输值。对于行&#xff0c;将值传输到与行接触的所有单元格。您可以通过先将多边形光栅化…

九、线性代数二-向量组的概念

目录 1、向量组的概念&#xff1a; 2、向量组线性组合的概念&#xff1a; 3、向量组的线性组合的矩阵表示&#xff1a; 4、向量组的线性组合的方程组表示&#xff1a; 1、向量组的概念&#xff1a; 理解&#xff1a; 矩阵是一个特殊的向量组。 2、向量组线性组合的概念&…

软考40-上午题-【数据库】-关系代数运算2-专门的集合运算

一、专门的集合运算 1、投影 示例&#xff1a; 可以用属性名进行投影&#xff0c;也可以用列的序号进行投影。 2、选择 例题 1、笛卡尔积 2、投影 3、选择 3、连接 第一步都要算&#xff1a;笛卡尔积。 3-1、θ连接 示例&#xff1a; 3-2、等值连接 示例&#xff1a; 3-3、自…