QString的解析与常用功能

news2025/1/17 15:28:39

QString存储一个16位QChar字符串,其中每个QChar对应一个UTF-16代码单元。(编码值大于65535的Unicode字符使用代理对存储,即两个连续的qchar。)
Unicode是一个国际标准,支持目前使用的大多数书写系统。它是US-ASCII (ANSI X3.4-1986)和Latin-1 (ISO 8859-1)的超集,
并且所有US-ASCII/Latin-1字符都在相同的代码位置上可用。

在这里插入图片描述

QString是QT编程中常用的类,除了用作数字量的输入输出外,QString还有很多其它功能,熟悉这些常见的功能,有助于灵活地实现字符串的处理功能。
QString存储字符串采用的是Unicode码,每一个字符是一个16位的QChar,而不是8位的char,所以QString处理中文字符没有问题,而且一个汉字算一个字符。

1、append和prepend

append()在字符串的后面添加字符串,prepend()在字符串的前面添加字符串,如:

QString str1="a", str2="b";
str1.append(str2); //ab

2、toUpper()和toLower()
toUpper()将字符串内的字母全部转换为大写形式,toLower()将字母全部转换为小写形式,如:

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

3、count()、size()、length()

count()、size()、length()都返回字符串的个数,这3个函数是相同的,但是要注意,字符串中如果有汉字,一个汉字算一个字符。

QString str1 = "NI 好";
int N = str1.count(); //N=3
int N = str1.size();//N=3
int N=str1.length(); //N=3

4、trimmed()和simplified()

trimmed()去掉字符串首尾的空格,simplified()不仅去掉首尾的空格,中间连续的空格也用一个空格替换。

QString str1 = " Are       you ok?  ", str2;
str2 = str1.trimmed(); //str2="Are     you OK?"
str2=str1.simplified();//str2="Are you OK?"

5、indexOf()和lastIndexOf()

indexOf()的函数原型为:
int indexOf(const QString &str, int form = 0, Qt::CaseSensitivity cs = Qt::caseSensitive) const
其功能是在自身字符串内查的参数字符串str出现的位置,参数from是开始查找的位置,QtLLCaseSensitivity cs参数指定是否区分大小写。
lastIndexOf()函数则是查的某个字符中最后出现的位置。

QString str1="my name is xiaoming";
int N=str1.indexOf("name"); //N=3

6、isNull()和isEmpty()

两个函数都是判读字符串是否为空,但是稍有差别。如果一个空字符串,只有"\0",isNull()返回false,而isEmpty()返回true; 只有未赋值的字符串,isNull才返回true.

QString str1,str2="";
bool N = str1.isNull();//N=true 未赋值的字符串变量
bool N= str2.isNull();//N=false 只有"\0"的字符串,也不是NULL
bool N=str1.isEmpty(); //N=true
bool N=str2.isEmpty(); //N=true

QString只要赋值,就在字符串的末尾自动加上"\0",所以,如果只是要判断字符中的内容是否为空,常用isEmpty().

7、contains()

判断字符串内是不包含某个字符串,可以指定是否区分大小写。

QString str1 = "test.cpp";
N=str1.contains(".cpp", Qt::CaseInsensitve);//N=true,不区分大小写
N=str1.contains(".CPP", Qt::CaseSensitive);//N=false,区分大小写

8、endsWith()和startsWith()

startsWith()判断是否以某个字符串开头,endWith()判断是否以某个字符结束。

QString str1="test.cpp";
N=str1.endsWith("cpp", Qt::CaseInsensitive);//N=true,不区分大小写
N=str1.startsWith("TEST"); //N=true, 缺省不区分大小写

9、left()和right()

left表示从字符串取左边多少个字符;right表示从字符串中取右边多少个字符。注意汉字被当作一个字符。

QString str2,str1="我的名字是";
str2 = str1.left(1);//str1="我"

10、section()

section()的函数原型为:
QString section(const QString &sep, int start, int end=-1, SectionFlags flags=SectionDefault) const
其功能是从字符串中提取以sep作为分隔符,从start端到end端的字符串。

QString str2,str1="数学,语文";
str2 = str1.section(",", 0,0) ; //str2="数字" 第一段的编号为0
str2= str1.section(",", 0, 1); //str2="数学,语文"

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

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

相关文章

盐湖卤水中分离硼的工艺有哪些

锂因其优良的物理化学性质,被认为是“推动世界进步的能源金属”,随着新能源、冶金等行业的快速发展,人们对锂的需求量逐年攀升。然而地壳中锂的含量仅为0.0065%左右,约80%的锂资源蕴含于盐湖卤水中。 盐湖卤水成分复杂&#xff0c…

Redis入门到入土(day03)

Redis的持久化 Redis 是内存数据库,如果不将内存中的数据库状态保存到磁盘,那么一旦服务器进程退出,服务器中的数据库状态也会消失。所以 Redis 提供了持久化功能! RDB(Redis DataBase) 什么是RDB 在指…

HugNLP发布,集成多种NLP任务,可训ChatGPT类模型

HugNLP发布,集成多种NLP任务,可训ChatGPT类模型 作者:王嘉宁 HugNLP——全面统一的NLP框架开源了! 近日,华师大HugAILab团队研发了HugNLP框架,这是一个面向研究者和开发者的全面统一的NLP训练框架&#x…

java版企业电子招投标采购系统源代码之系统的首页设计

​​ 功能模块: 待办消息,招标公告,中标公告,信息发布 描述: 全过程数字化采购管理,打造从供应商管理到采购招投标、采购合同、采购执行的全过程数字化管理。通供应商门户具备内外协同的能力,为…

来来来,一起了解下MTK(联发科)

​ https://www.mediatek.com/ ​ 进入MTK官网,可以看到其产品分为七大方向:智能手机、笔记本电脑与平板电脑、家庭娱乐、车用市场、连接与网络技术、定制芯片服务、物联网。这里主要介绍智能手机、连接与网络技术、物联网三大版块。 一、智能手机 智…

使用护眼灯台灯哪个牌子好用来保护眼睛?真正做到护眼台灯品牌

现在的家长很多人觉得家里已经有灯光了,没必要在买台灯。但事实上台灯有很多优点,尤其对于小孩子来说:1.提供更好的光线:台灯能够提供更加明亮的光线,有助于保护眼睛健康。2.提高工作效率:台灯光线舒适可提高工作效率或学习效率。…

STM32G0开发板下载代码问题

任务: 通过CueMX生成代码,然后烧写到STM32G0开发板上。 遇到的问题: 1. CubeMX生成的代码能用Keil编译,但是下载不到flash中 2. CubeMX再次生成代码后,SWD无法识别芯片。 逐个击破: 1. CubeMX生成的代码…

Axure教程:动态分组柱状图(中继器)

本文将教大家如何用AXURE中的中继器做组分组柱状图。 如图: 预览地址:https://vvpq8c.axshare.com 原型下载地址:https://download.csdn.net/download/weixin_43516258/87761575?spm1001.2014.3001.5503 一、功能介绍 1、在中继器或表格中填…

php导出excel多个sheet

我引用的拓展是: "phpoffice/phpspreadsheet": "^1.4", 我的$accept数据是这样的 "data": { "examStu": [ { "ctime": "2023-04-27 16:28:16", "className": "大猛1", "n…

JavaScript—数据类型转换

目录 1、起 源 理 念 2、特 点 框 架 书 写 位 置 注 释 浏览器调试js代码 3、变量 ① 全局变量 ② 局部变量 ③ 常量 4、数据类型 严格检查数据类型-use strict ① 数 组 ② 字符串 6、类型转换 ① 字符串转数字 ② 字符串转bool值 ③ 能力判断 7、编码方…

自动控制原理笔记-频率响应法-稳定裕度

目录 一、增益裕度h(幅值裕度, gain margin) 二、相角裕度g (phase margin) 三、根据Bode图确定稳定裕度 相角裕度 一、增益裕度h(幅值裕度, gain margin) 开环幅相特性曲线(奈氏曲线)G(jw)与负实轴…

教你一招在VMware的NAT模式下,两台电脑如何互相访问对方的虚拟机

目录 一. 准备工作二. 开始2.1 设置NAT模式2.2 进行NAT模式设置2.3 XShell访问对方虚拟机 一. 准备工作 需要两台电脑(我准备了两台win10) VMware虚拟机:【官网下载】两台win10电脑上都安装好centos 7系统(我这里是centos 7版本…

3.Java线程

Java线程 3.1 创建和运行线程 方法一,直接使用Thread import lombok.extern.slf4j.Slf4j;/*** 使用匿名内部类创建线程* author xc* date 2023/4/30 16:19*/ Slf4j public class Test1 {public static void main(String[] args) {Thread thread new Thread(){Ov…

OpenCV-Python图像几何变换

概念:几何变换是指将一幅图像映射到另外一幅图像内的操作。OpenCV提供了多个与映射有关的函数,这些函数使用起来方便灵活,能够高效地完成图像的映射。 缩放 cv2.resize()函数用于缩放图像 det cv2.resize(src, dsize[,dst[,fx[,fy[,interp…

入门级BP神经网络实现回归预测的原理与python代码

文章目录 一、BP神经网络是什么?二、BP神经网络的原理?三、BP神经网络预测过程如下1.初始化参数:2.前向传播:3.反向传播:4.更新参数:5.重复上述过程,直到满足收敛条件或达到最大迭代轮次。 四、…

【Liunx】进程地址空间

文章目录 📖 前言1. 环境变量收尾1.1 认识bash进程:1.2 环境变量具有全局属性:1.3 内建命令: 2. 进程地址空间2.1 Liunx — 地址空间验证:2.2 感知地址空间的存在:2.3 认识地址空间:2.3 - 1&…

C++右值引用(左值表达式、右值表达式)(移动语义、完美转发(右值引用+std::forward))(有问题悬而未决)

文章目录 什么是右值?是什么是右值引用?什么是移动语义?什么是完美转发?(右值引用std::forward) 什么是右值? 在 C 中,表达式可以分为左值表达式和右值表达式。左值表达式指的是可以…

《常规脉搏传输时间作为人体血压变化标志》阅读笔记

目录 一、论文摘要 二、论文十问 Q1: 论文试图解决什么问题? Q2: 这是否是一个新的问题? Q3: 这篇文章要验证一个什么科学假设? Q4: 有哪些相关研究?如何归类?谁是这一课题在领域内值得关注的研究员? …

OpenCV教程——加载、修改、保存图像

1.颜色空间 颜色空间:也称彩色模型(又称彩色空间或彩色系统)。本质上,彩色模型是坐标系统和子空间的阐述。位于系统的每种颜色都有单个点表示。RGB(红绿蓝)是依据人眼识别的颜色定义出的空间,可…

「二线豪华」或成历史,理想反超沃尔沃再树「里程碑」

今年的上海车展,除了占据C位的新能源汽车,还有传统车企。 上海车展开幕前,沃尔沃汽车大中华区销售公司总裁钦培吉在新车发布会上直言:“新势力会的,我们三年就学会了;我们会的,新势力十年都学不…