Qt QString与QChar总结
(一) QString
1 QString的简介
QString 是Qt 中的一个类,用于存储字符串,QString 没有父类。QString 存储的是一串字符,每个字符是一个 QChar 类型的数据。QChar 使用的是 UTF-16 编码,一个字符包含 2字节数据。
对于超过 65535的Unicode 编码,QString 使用两个连续的 QChar 字符表示。UTF-16是一种 Unicode编码,能表示汉字,在QString 字符串中一个汉字是一个字符。
QString 类定义了大量的接口函数用于字符串操作。QString 在 Qt类库中应用非常广泛,很多函数的参数是 QString 类型。QString 使用隐式共享减少内存占用,也就是只有在修改一个字符串的时候,这个字符串才会被复制。
2 QString创建和初始化
QString 是一个类,有多种构造函数,定义 QString 字符串的较简单方式是给它的构造函数信递一个const char 类型的数据。例如,下面的代码定 义了一个QString 对象str,并且初始化其字符串内容为 “Hello Qt”。
QString str = "Hello Qt";
在Qt Creator 中,所有源程序文件都默认使用 UTF-8 编码进行保存,所以,赋值语句右侧的“Hello Qt” 是一个C语言标准的 const char *类型的字符串,以“\0”作为结束符。 QString 会使用其静态函数 fromUtf8()将这个const char *类型的数据转换为 UTF-8 编码的字符串。
3 QString字符串的索引
QString 在被创建和初始化后,其存储的字符串就是一个QChar 字符数组,可以使用元素索引操作符 “[ ]” 或接口函数at()访问每个字符。QString 字符串内字符的索引序号是从0开始的。
4 QString字符串的拼接
- (1)使用加法运算符可以直接将二个QSring字符串连接起来
- (2)使用函数append()在当前的字符串后面添加字符串
- (3)使用函数prepend()在当前的字符串前面添加字符串
5 QString字符串的截取
* (1)函数front()和back() 分别返回字符串的第一个字符(str[0])和字符串最后一个字符
* (2)函数left(int n) 和right(int n) 分别返回字符串的左边第n个字符和字符串右边第n个字符
* (3)函数first(int n) 和last(int n) 分别返回字符串前n个字符和字符串后n个字符
* (4)函数mid(int position, int n = -1) 返回字符串position位置的后n个字符
QString QString::mid(int position, int n = -1) const
* (5)函数section() 从字符串提取以sep作为分隔符,从start段到end段字符串
QString section
(const QString &sep, int start, int end = -1, SectionFlags flags = SectionDefault) const
6 QString字符串的存储
*(1)函数isNull()和isEmpty() 判断字符串是否为空,区别QString("")相当QString("\0"),所以QString("\0"),对于QString ("").isNull()则为假
QString str1, str2 = "";
bool N = str1.isNull(); //true, 未赋值N = str2.isNull(); //false,已被赋值不为nullN = str1.isEmpty(); //trueN = str2.isEmpty(); //true
* (2)函数size(),length()和count() 前两者都返回字符串中字符个数,功能相同;count()不带参数表示与前二个功能相同,带参数表示某个字符串在当前字符串出现的次数
* (3)函数clear() 清空当前字符串
* (4)函数resize() 改变字符串长度,扩充字符串容量
* (5)函数fill() 将字符串中每个字符都用一个新的字符替换
7 QString字符串的搜索和判断
* (1)函数indexOf()和lastIndexOf() 在字符串内部查找某个子字符串首次出现的位置
* (2)函数contains() 判断字符串是否包含某个子字符串
* (3)函数endsWith()和startsWith() 判断字符串是否以某个字符开头和以某个字符结尾
* (4)函数count() 统计字符串里子字符串出现的次数
8 QString字符串的转换和修改
* (1)函数toUpper()和toLower() 字符串转大写和小写
* (2)函数trimmed()和simplified() 去掉字符串中首尾空格 和 把多个空格用单个空格替换
* (3)函数chop() 去掉末尾的n个字符,n是输入参数,如果n大于或等于字符串实际长度,则字符串会变为空
* (4)函数insert() 在字符串的某个位置插入一个字符串
* (5)函数replace() 从字符串的pos位置开始替换n个字符
* (6)函数remove() 从字符串的pos位置开始移除n个字符
(二) QChar
1 QChar的简介
QString 字符串中的每个字符都是QChar 类型的,QChar 也是一个类,它采用 UTF-16 编码表示字符。
2 QChar的主要的函数
bool isDigit() const 判断字符是否为 0~9的数字
bool isLetter() const 判断字符是否为字母
bool isLetterOrNumber() const 判断字符是否为字母或数字
bool isLower() const 判断字符是否为小写字母
bool isUpper() const 判断字符是否为大写字母
bool isMark() const 判断字符是否为标记
bool isNonCharacter() const 判断字符是否为非文本字符
bool isNull() const 判断字符编码是否为 0x0000,也就是“\0”
bool isNumber() const 判断字符是否为一个数,表示数的字符不仅包括数字0~9,还包括数字符号①、②等
bool isPrint() const 判断字符是否为可打印字符
bool isPunct() const 判断字符是否为标点符号
bool isSpace() const 判断字符是否为分隔符号,分隔符号包括空格、制表符
bool isSymbol() const 判断字符是否为符号,如特殊符号★、▲
char toLatin1() const 返回与 QChar 字符等效的 Latinl 宇符,如果无等效字符则返回0
QChar toLower() const 返回字符的小写形式字符,如果字符不是宇母,则返回其本身
QChar toUpper() const 返回字符的大写形式字符,如果字符不是宇母,则返回其本身
ushort unicode() const 返回ushort的Unicode编码数值
3 QChar与Latin1字符转换
QChar 的函数 toLatin1()用于将 QChar 字符转换为 Latin1 字符,也就是将 UTF-16编码的字符转换为1 字节 Latin1 编码的宇符。只有当 QChar 宇符的编码为 0~255 时,函数 toLatin1()的转换才有意义。
QChar 还有一个静态函数 QChar::fromLatin1(),它用于将 Latin1 字符转换为 QChar 宇符,其函数原型定义如下:
QChar QChar:: fromLatin1(char c)
QChar 有一个构造函数与这个静态函数功能相同,这个构造函数定义如下:
QChar:: QChar (char ch)
例如,运行下面的一段代码后,字符串 str 的内容会由“Dimple” 变成 “Pimple”。
QString str= "Dimple";
QChar chP= OChar::fromLatin1('P'); //使用静态函数
//QChar chP= QChar ( 'P' ) ; //使用构造函数
str [0] = chP; //替换了str中的第一个字符
4 QChar字符Unicode的编码
QChar 字符是 UTF-16编码的字符, QChar 的接口函数unicode()用于返回字符的 UTF-16编码,也就是ushort类型的数。 我们可以通过这个函数获取任何一个字符的 UTF-16 编码,例如一个汉字的 UTF-16 编码。
也可以通过 char16_t 类型的编码构造 QChar 字符,静态函数 QChar::fromUcs2()
可以实现这样的功能,其函数原型定义如下:
QChar QChar::fromUcs2 (char16_t c)
QChar 有一个构造函数与这个静态函数功能相同,这个构造函数定义如下:
QChar:: QChar (char16_t ch)
5 QChar的逻辑运算符
QChar 类还定义了逻辑运算符,用于两个 QChar对象的比较。两个QChar 对象的逻辑比较就是两个 QChar 字符的 UTF-16编码大小的比较
相关文章:
Qt QString与QChar总结
(一) QString 1 QString的简介 QString 是Qt 中的一个类,用于存储字符串,QString 没有父类。QString 存储的是一串字符,每个字符是一个 QChar 类型的数据。QChar 使用的是 UTF-16 编码,一个字符包含 2字节数据。 对于超过 6553…...

Leetcode算法系列| 1. 两数之和(四种解法)
目录 1.题目2.题解解法一:暴力枚举解法二:哈希表解法解法三:双指针(有序状态)解法四:二分查找(有序状态) 1.题目 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数…...

汇编-pop出栈指令
32位汇编 执行动作分为两步: 第一步:读出数据 第二步:改变栈地址 如果操作数是16位, 则ESP加2; 如果操作数是32位, 则ESP加4 espesp2 或 espesp4 格式:...

【代码】基于VMD(变分模态分解)-SSA(麻雀搜索算法优化)-LSTM的光伏功率预测模型(完美复现)matlab代码
程序名称:基于VMD(变分模态分解)-SSA(麻雀搜索算法优化)-LSTM的光伏功率预测模型 实现平台:matlab 代码简介:提出了变分模态分解(VMD)和麻雀搜索算法(SSA)与长短期记忆神经网络 (LSTM)相耦合,…...

【UnLua】在 Lua 中定义 UE 反射类型
【UnLua】在 Lua 中定义 UE 反射类型 用法 启动编辑器时遍历 Defines 目录下 lua 脚本来加载 UE 反射类型(开个临时的 Lua VM 即可)直接像 -- define a uenum in lua UEnum.EEnumGuestSomethingElse {Value1 1;Value2 2; }-- use it like a native …...

react的开发中关于图片的知识
React是一个流行的JavaScript库,用于构建用户界面。在React开发中,图片是一个非常重要的元素,可以用于美化界面和展示内容。本篇博客将详细讲解React中关于图片的知识。 1. React中使用图片 在React中使用图片非常简单,只需要使…...
AcWing 188:武士风度的牛 ← BFS
【题目来源】https://www.acwing.com/problem/content/190/ 【题目描述】 农民 John 有很多牛,他想交易其中一头被 Don 称为 The Knight 的牛。 这头牛有一个独一无二的超能力,在农场里像 Knight 一样地跳(就是我们熟悉的象棋中马的走法&…...

马养殖场建设VR模拟实训教学平台具有灵活性和复用性
为保障养殖场生物安全,避免疫病传播,学生出入养殖场受时间和地域的限制, 生产实习多以参观为主,通过畜牧企业技术人员的讲解,学生被动了解生产过程。为了解决畜牧养殖实训难的问题,借助VR技术开展畜牧养殖虚…...

云原生技术演进之路-(云技术如何一步步演进的,云原生解决了什么问题?)
云技术如何一步步演进的? 云原生解决了什么问题? 物理设备 电脑刚被发明的时候,还没有网络,每个电脑(PC),就是一个单机。 这台单机,包括CPU、内存、硬盘、显卡等硬件。用户在单机…...

基于OGG实现Oracle实时同步MySQL
📢📢📢📣📣📣 哈喽!大家好,我是【IT邦德】,江湖人称jeames007,10余年DBA及大数据工作经验 一位上进心十足的【大数据领域博主】!😜&am…...

〖大前端 - 基础入门三大核心之JS篇㊷〗- DOM事件对象及它的属性
说明:该文属于 大前端全栈架构白宝书专栏,目前阶段免费,如需要项目实战或者是体系化资源,文末名片加V!作者:不渴望力量的哈士奇(哈哥),十余年工作经验, 从事过全栈研发、产品经理等工作…...

如何搭建zerotier服务器组网实现内网穿透
小白花了四天的下班时间终于把zerotier网络调通,此刻坐在桌前舒畅地喝口茶~~ 下面来详细记录下这几天踩的坑: 起因就在于一直在iPad上用向日葵连接公司电脑的我觉得向日葵的界面用的实在难受,vs code操作十分不灵光&…...

【C++】构造函数和析构函数第四部分(深拷贝和浅拷贝)--- 2023.11.25
目录 什么是浅拷贝?浅拷贝的问题使用深拷贝解决浅拷贝问题结束语 什么是浅拷贝? 如果在一个类中没有人为定义拷贝函数,则系统会提供默认拷贝函数。那么在此默认拷贝函数中主要进行了简单的赋值操作,那这个简单的赋值操作我们一般…...

加速软件开发:自动化测试在持续集成中的重要作用!
持续集成的自动化测试 如今互联网软件的开发、测试和发布,已经形成了一套非常标准的流程,最重要的组成部分就是持续集成(Continuous integration,简称CI,目前主要的持续集成系统是Jenkins)。 那么什么是持…...
工具及方法 - 查找排名:国内网络作家排名
中国十大网络小说作家排名,在买购网的排名: 中国十大网络小说作家 网络小说作家排行榜 中国著名网络写手排名→MAIGOO生活榜 (这个网站里还有很多其他的排名。) 1,唐家三少 2,辰东 3,我吃西红…...
MySQL INSERT插入条件判断:如果不存在则插入
MySQL INSERT插入条件判断:如果不存在则插入(转) 我们经常需要进行sql的批量插入,要求:该条记录不存在则插入,存在则不插入。如果使用一条INSERT语句实现呢? ####普通的 INSERT INTO 插入&…...

CSM32RV003:国产高精度16位ADC低功耗RISC-V内核MCU
目录 高精度ADC工业应用工业数据采集应用CSM32RV003简介主要特性 高精度ADC工业应用 高精度ADC即高精度模数转换器,是一种能够将输入模拟信号转换为数字信号的芯片,在多种消费电子、工业、医疗和科研领域都有广泛应用。高精度ADC的主要特点是能够提供高…...
65道常问前端面试题总结react
面试题总结 一.Axios的实现原理 Axios 是一个基于 Promise 的 HTTP 客户端库,用于浏览器和 Node.js 环境。它可以发送 HTTP 请求并处理响应数据。下面是 Axios 实现的基本原理: 封装请求:Axios 提供了一个简单易用的 API,使得开…...

单片机学习1——点亮一个LED灯
Keil软件编写程序: 特殊功能寄存器声明: #include<reg52.h>sbit LED P1^0;void main() {LED 0;while(1); } 代码说明: sbit 语句是特殊功能位声明。 生成HEX文件,这个文件是下载到单片机里的文件。Options for Target…...

PyCharm 配置sqlite3驱动下载问题
单击View -> Tool Windows -> Database,打开Database窗体,之后进行配置,下载驱动包失败! 解决 (1)下载Sqlite3驱动 下载地址: Central Repository: org/xerial/sqlite-jdbc 选择的版本是3.34.0,下载…...

渗透实战PortSwigger靶场-XSS Lab 14:大多数标签和属性被阻止
<script>标签被拦截 我们需要把全部可用的 tag 和 event 进行暴力破解 XSS cheat sheet: https://portswigger.net/web-security/cross-site-scripting/cheat-sheet 通过爆破发现body可以用 再把全部 events 放进去爆破 这些 event 全部可用 <body onres…...
Qwen3-Embedding-0.6B深度解析:多语言语义检索的轻量级利器
第一章 引言:语义表示的新时代挑战与Qwen3的破局之路 1.1 文本嵌入的核心价值与技术演进 在人工智能领域,文本嵌入技术如同连接自然语言与机器理解的“神经突触”——它将人类语言转化为计算机可计算的语义向量,支撑着搜索引擎、推荐系统、…...

Nuxt.js 中的路由配置详解
Nuxt.js 通过其内置的路由系统简化了应用的路由配置,使得开发者可以轻松地管理页面导航和 URL 结构。路由配置主要涉及页面组件的组织、动态路由的设置以及路由元信息的配置。 自动路由生成 Nuxt.js 会根据 pages 目录下的文件结构自动生成路由配置。每个文件都会对…...
今日科技热点速览
🔥 今日科技热点速览 🎮 任天堂Switch 2 正式发售 任天堂新一代游戏主机 Switch 2 今日正式上线发售,主打更强图形性能与沉浸式体验,支持多模态交互,受到全球玩家热捧 。 🤖 人工智能持续突破 DeepSeek-R1&…...

SAP学习笔记 - 开发26 - 前端Fiori开发 OData V2 和 V4 的差异 (Deepseek整理)
上一章用到了V2 的概念,其实 Fiori当中还有 V4,咱们这一章来总结一下 V2 和 V4。 SAP学习笔记 - 开发25 - 前端Fiori开发 Remote OData Service(使用远端Odata服务),代理中间件(ui5-middleware-simpleproxy)-CSDN博客…...
基于Java Swing的电子通讯录设计与实现:附系统托盘功能代码详解
JAVASQL电子通讯录带系统托盘 一、系统概述 本电子通讯录系统采用Java Swing开发桌面应用,结合SQLite数据库实现联系人管理功能,并集成系统托盘功能提升用户体验。系统支持联系人的增删改查、分组管理、搜索过滤等功能,同时可以最小化到系统…...
《C++ 模板》
目录 函数模板 类模板 非类型模板参数 模板特化 函数模板特化 类模板的特化 模板,就像一个模具,里面可以将不同类型的材料做成一个形状,其分为函数模板和类模板。 函数模板 函数模板可以简化函数重载的代码。格式:templa…...

RSS 2025|从说明书学习复杂机器人操作任务:NUS邵林团队提出全新机器人装配技能学习框架Manual2Skill
视觉语言模型(Vision-Language Models, VLMs),为真实环境中的机器人操作任务提供了极具潜力的解决方案。 尽管 VLMs 取得了显著进展,机器人仍难以胜任复杂的长时程任务(如家具装配),主要受限于人…...

通过 Ansible 在 Windows 2022 上安装 IIS Web 服务器
拓扑结构 这是一个用于通过 Ansible 部署 IIS Web 服务器的实验室拓扑。 前提条件: 在被管理的节点上安装WinRm 准备一张自签名的证书 开放防火墙入站tcp 5985 5986端口 准备自签名证书 PS C:\Users\azureuser> $cert New-SelfSignedCertificate -DnsName &…...

什么是VR全景技术
VR全景技术,全称为虚拟现实全景技术,是通过计算机图像模拟生成三维空间中的虚拟世界,使用户能够在该虚拟世界中进行全方位、无死角的观察和交互的技术。VR全景技术模拟人在真实空间中的视觉体验,结合图文、3D、音视频等多媒体元素…...