【qt】QString字符串

前言:
这节很轻松,大家可以放心食用 ♪(・ω・)ノ

QString目录

  • 一.与c++String的区别
  • 二.隐式共享
  • 三.初始化
  • 四.判断是否为空串
  • 五.字符串的长度
  • 六.添加字符串
    • 1.尾加
    • 2.任意位置加
  • 七.替换字符串
  • 八.修改字符串
  • 九.删除字符串
    • 1.清空
  • 十.获取子串
    • 1.任意位置获取
    • 2.左获取
    • 3.右获取
  • 十一.分割字符串
  • 十二.转换成c语言字符串
  • 十三.类型转换
    • 1.字符串转整数
    • 2.字符串转小数
  • 十三.小项目 ‘藏头诗’

一.与c++String的区别

c++字符串的每个字符,占一个字节
但是QString每个字符占两个字节。

这样就完美解决了汉字占两个字节的问题。

内存变大了,自然好处少不了
隐式共享就是再此基础上完成的

二.隐式共享

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QDebug>MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{ui->setupUi(this);QString str1="姚国林";QString str2=str1;//拷贝构造函数,默认浅拷贝qDebug()<<str1;qDebug()<<str2;str2[2]='A';//深拷贝,不然str1的值也会被改变qDebug()<<str1;qDebug()<<str2;str1=str2;//str1又指向str2,str1的内存自动销毁qDebug()<<str1;qDebug()<<str2;
}MainWindow::~MainWindow()
{delete ui;
}

运行结果:
在这里插入图片描述
想必大家对结果并不意外,最要是内部的实现机制,你知道嘛?不慌下面给大家画一个图!

在这里插入图片描述

QString会多一个用来记录指针指向的计数器
当我们用str1初始化str2时,会做一个浅拷贝,学过c++的应该都知道,就是指针也指向同一块内存。
对srt2的值进行修改,如果是浅拷贝,则str1也会被修改,此时,str2会做一个深拷贝,重新开辟一块内存。
如果现在又让str2赋值给str1,则str2的计数器为2,str1的计数器为0,就会自动销毁这一块内存。

所以说QString这种隐式共享也被称之为写时复制,会大大的节省开销,如果一样就指向同一块内存,如果不一样,就马上开辟一块内存。

三.初始化

可以用=,或者()来进行初始化
在这里插入图片描述
运行结果:
在这里插入图片描述

四.判断是否为空串

关键字:isEmpty()

在这里插入图片描述
运行结果:
在这里插入图片描述
值得注意的是 “” 是空串,但是 " " 不是空串!

五.字符串的长度

三个接口:size(),count(),size()

在这里插入图片描述
运行结果:
在这里插入图片描述

六.添加字符串

1.尾加

对字符串进行+=即可

在这里插入图片描述
运行结果:
在这里插入图片描述

还可以append()

在这里插入图片描述
运行结果:
在这里插入图片描述
哈哈你们是大帅哥吗?是的话,评论一个是!

2.任意位置加

insert()

在这里插入图片描述
运行结果:
在这里插入图片描述
我真滴服了,我明明是大帅哥。

在这里插入图片描述
运行结果:
在这里插入图片描述
当添加的位置大于原来字符串时,中间会自动补空格。

七.替换字符串

replace()

在这里插入图片描述
运行结果:
在这里插入图片描述
默认是区分大小写的!可以加一个Qt::CaseInsensitive不区分大小写替换
在这里插入图片描述
运行结果:
在这里插入图片描述

八.修改字符串

直接可以用下标进行修改

在这里插入图片描述
运行结果:
在这里插入图片描述

九.删除字符串

remove()

在这里插入图片描述
运行结果:
在这里插入图片描述
可以指定位置删除,也可以直接查值删除!

1.清空

clear()

在这里插入图片描述
运行结果:
在这里插入图片描述

十.获取子串

1.任意位置获取

mid()
在这里插入图片描述
运行结果:

在这里插入图片描述

2.左获取

left()

在这里插入图片描述
运行结果:
在这里插入图片描述

3.右获取

right()

在这里插入图片描述
运行结果:
在这里插入图片描述

十一.分割字符串

split(),返回值是一个QStringList容器,后面会讲…

在这里插入图片描述

运行结果:
在这里插入图片描述

十二.转换成c语言字符串

先转换成标准字符串(toStdString())再转换成c语言的字符串(c_str())

十三.类型转换

1.字符串转整数

toInt(bool,进制)

在这里插入图片描述
运行结果:
有字母的转换失败!
在这里插入图片描述
还可以转换成16进制:
在这里插入图片描述
运行结果:
在这里插入图片描述
123的16进制就是291
在这里插入图片描述

2.字符串转小数

toDouble()

在这里插入图片描述
运行结果:
在这里插入图片描述
其他类型转换同理!

十三.小项目 ‘藏头诗’

OK,光说不练假把式,现在我们就来做一个自己的小项目。
先看效果:
在这里插入图片描述
点击生成:
在这里插入图片描述

哈哈,事不宜迟,我们开始吧

首先ui设计器去设计界面,用到Label,Text Edit,Push Button,Line Edit 这几个组件

在这里插入图片描述

然后在按钮用转到槽

#include <QMessageBox>
...
void MainWindow::on_pushButton_clicked()
{if(ui->textEdit->toPlainText().isEmpty()){QMessageBox::information(this,"提示","文本为空,请输入文本",QMessageBox::Ok);}else{QString str=ui->textEdit->toPlainText();QStringList list=str.split('\n');QString ret;for(int i=0;i<list.size();i++){ret+=list[i].left(1);}ui->lineEdit->setText(ret);}}

首先判断文本是否为空,为空就出现提示框

在这里插入图片描述

然后将所有文本添加到字符串中,用\n(换行字符)进行分割。
然后再取子串进行添加,将其设置到行框上即可!

啊!终于完了,陌生人不知道你何时能看到,加油吧。
道阻且长,行则将至,我的成长之路。

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

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

相关文章

【C语言项目】贪吃蛇(上)

个人主页 ~ gitee仓库~ 欢迎大家来到C语言系列的最后一个篇章–贪吃蛇游戏的实现&#xff0c;当我们实现了贪吃蛇之后&#xff0c;我们的C语言就算是登堂入室了&#xff0c;基本会使用了&#xff0c;当然&#xff0c;想要更加熟练地使用还需要多多练习 贪吃蛇 一、目标二、需要…

(八)JSP教程——application对象

application对象是一个比较重要的对象&#xff0c;服务器在启动后就会产生这个application对象&#xff0c;所有连接到服务器的客户端application对象都是相同的&#xff0c;所有的客户端共享这个内置的application对象&#xff0c;直到服务器关闭为止。 可以使用application对…

MGRE 实验

需求&#xff1a;1、R2为ISP&#xff0c;其上只能配置IP地址。 2、R1-R2之间为HDLC封装 3、R2-R3之间为ppp封装&#xff0c;pap认证&#xff0c;R2为主认证方。 4、R2-R4之间为ppp封装&#xff0c;chap认证&#xff0c;R2为主认证方。 5、R1、R2、R3构建MGRE环境&#xff0…

sourceTree push失败

新电脑选择commit and push&#xff0c;报错了&#xff0c;不过commit成功&#xff0c;只不过push失败了。 原因是这个&#xff0c;PuTTYs cache and carry on connecting. 这里的ssh选择的是 PuTTY/Plink&#xff0c;本地没有这个ssh密钥&#xff0c;改换成openSSH&#xff…

Windows电脑搭建HarmonyOS NEXTDeveloper Preview2环境详解

Windows电脑搭建HarmonyOS NEXTDeveloper Preview2环境详解&#xff1a; HarmonyOS NEXT Preview系列教程基于Api11讲解-IT营大地老师 1 、电脑要求以及注意事项 操作系统 &#xff1a; Windows10 64 位、 Windows11 64 位 内存 &#xff1a; 8GB 及以上&#xff0c;推荐 16G…

新火种AI|AI让大家都变“土”了!

作者&#xff1a;一号 编辑&#xff1a;美美 AI不仅要把人变“土”&#xff0c;还要把人变多样。 这个世界&#xff0c;终究是变“土”了。 今年五一假期&#xff0c;一个名为“Remini”的AI修图APP火遍了全网。注意&#xff0c;是Remini&#xff0c;而不是Redmi&#xff0…

Redis学习汇总

目录 1.Linux环境下安装redis 2.redis的数据结构及命令 3.redis.conf配置文件常用配置 3.redis的事务操作 4.redis实现乐观锁 5.通过jedis操作redis 6.Springboot集成redis 7.自定义一个RedisTemplate 8.持久化策略 RDB和AOF 9.redis集群环境搭建 10.哨兵模式 11.缓…

解锁自动化办公新技能:Python实战应用-自动转发邮件到企业微信

&#x1f4e7; 【高效联络&#xff0c;信息不落空】 &#x1f4e7; 在这个信息爆炸的时代&#xff0c;作为企业的一员&#xff0c;我们如何从繁杂的邮件中迅速筛选出客户的心声、展会的新动向&#xff0c;同时又不遗漏每一份重要的咨询呢&#xff1f;秘诀就在我们的新策略里&a…

Day3 | Java基础 | 4常见类

Day3 | Java基础 | 4 常见类 基础版Object类equalshashCode&#xff08;散列码&#xff09;hashCode和equals clone方法String类 问题回答版Object类Object类的常见方法有哪些&#xff1f;和equals()的区别是什么&#xff1f;为什么要有hashCode&#xff1f;hashCode和equals的…

FFmpeg常用命令详解与实战指南

下载地址&#xff1a;Releases BtbN/FFmpeg-Builds (github.com) 1. 获取视频信息 使用FFmpeg获取视频信息是最基本的操作之一。你可以使用-i选项指定输入文件&#xff0c;然后使用FFmpeg内置的分析器来获取视频的各种信息&#xff0c;包括视频编解码器、音频编解码器、分辨…

JAVA文件的简单操作

文件IO&#xff08;Input和Output&#xff09; 文件的输入和输出是人为规定的&#xff0c;那么什么是输入&#xff1f;什么是输出捏&#xff1f;在这里统一已CPU为基准 例如&#xff1a;将文件由内存写入硬盘就是输出&#xff0c;有硬盘写入内存就是输入。可以总结为&#xff…

OpenHarmony 3.2 Release版本实战开发——Codec HDI适配过程

简介 OpenHarmony Codec HDI&#xff08;Hardware Device Interface&#xff09;驱动框架基于 OpenMax 实现了视屏硬件编解码驱动&#xff0c;提供 Codec 基础能力接口供上层媒体服务调用&#xff0c;包括获取组件编解码能力、创建组件、参数设置、数据的轮转和控制、以及销毁…

C++反汇编,指针和内存分配细节,面试题05

文章目录 20. 指针 vs 引用21. new vs malloc 20. 指针 vs 引用 指针是实体&#xff0c;占用内存空间&#xff0c;逻辑上独立&#xff1b;引用是别名&#xff0c;与变量共享内存空间&#xff0c;逻辑上不独立。指针定义时可以不初始化&#xff1b;引用定义时必须初始化。指针的…

Cmake编译源代码生成库文件以及使用

在项目实战中&#xff0c;通过模块化设计能够使整个工程更加简洁明了。简单的示例如下&#xff1a; 1、项目结构 project_folder/├── CMakeLists.txt├── src/│ ├── my_library.cpp│ └── my_library.h└── app/└── main.cpp2、CMakeList文件 # CMake …

Python sqlite3库 实现 数据库基础及应用 输入地点,可输出该地点的爱国主义教育基地名称和批次的查询结果。

目录 【第11次课】实验十数据库基础及应用1-查询 要求: 提示: 运行结果&#xff1a; 【第11次课】实验十数据库基础及应用1-查询 声明&#xff1a;著作权归作者所有。商业转载请联系作者获得授权&#xff0c;非商业转载请注明出处。 1.简答题 数据库文件Edu_Base.db&#…

国内唯一!阿里云荣膺MongoDB“2024年度DBaaS认证合作伙伴奖”

近日&#xff0c;在MongoDB用户大会纽约站上&#xff0c;阿里云荣膺MongoDB“2024年度DBaaS认证合作伙伴奖”。这是阿里云连续第五年斩获MongoDB合作伙伴奖项&#xff0c;也是唯一获此殊荣的中国云厂商。 MongoDB是当今全球最受欢迎的非关系型数据库之一。凭借灵活的模式和丰富…

Unity 修复Sentinel key not found (h0007)错误

这个问题是第二次遇到了&#xff0c;上次稀里糊涂的解决了&#xff0c;也没当回事&#xff0c;这次又跑出来了&#xff0c;网上找的教程大部分都是出自一个人。 1.删除这个路径下的文件 C:\ProgramData\SafeNet Sentinel&#xff0c;注意ProgramData好像是隐藏文件 2.在Windows…

Redis(安装及配置)

1.什么是redis Redis 全称 Remote Dictionary Server&#xff08;即远程字典服务&#xff09;&#xff0c;它是一个基于内存实现的键值型非关系&#xff08;NoSQL&#xff09;数据库&#xff0c;由意大利人 Salvatore Sanfilippo 使用 C 语言编写。 2.优势 性能极高&#xff…

如何进行资产梳理

前言 为什么要进行资产梳理&#xff1f; 资产梳理方式一: 一、安全防护设备资产 二、对外开放服务项目资产 三、项目外包业务流程资产 资产梳理方式二: 一、业务资源梳理 二、设备资产梳理 三、第三方的服务信息梳理 风险梳理 风险有哪些&#xff1f; 一,账号权限风…

【VTKExamples::Rendering】第一期 TestAmbientSpheres(环境照明系数)

很高兴在雪易的CSDN遇见你 VTK技术爱好者 QQ:870202403 公众号:VTK忠粉 前言 本文分享VTK样例TestAmbientShperes,介绍环境照明系数对Actor颜色的影响,希望对各位小伙伴有所帮助! 感谢各位小伙伴的点赞+关注,小易会继续努力分享,一起进步! 你的点赞就是我的动…