Qt 实战(3)数据类型 | 3.3、QString

文章目录

  • 一、QString
    • 1、创建和初始化 `QString`
    • 2、字符串拼接
    • 3、字符串的查找和替换
    • 4、字符串的分割
    • 5、字符串的转换
    • 6、字符串的格式化
    • 7、国际化支持

前言:

QString 是 Qt 框架中用于处理 Unicode 字符串的一个非常强大且灵活的类。它提供了丰富的功能来操作文本数据,包括字符串的拼接、查找、替换、分割、转换以及国际化支持等。在 Qt 应用程序中,QString 是处理文本的首选方式,因为它能够高效地处理 Unicode 字符,并且与 Qt 的其他部分紧密集成。下面将详细介绍 QString 的一些基本用法。

一、QString

1、创建和初始化 QString

QString 可以通过多种方式创建和初始化:

// 使用空字符串初始化  
QString str1;  // 使用 C 风格字符串初始化  
QString str2("Hello, Qt!");  // 使用字符数组初始化  
const char* cstr = "Hello, Qt!";  
QString str3(cstr);  // 使用 UTF-8 编码的字节数组初始化  
QByteArray byteArray = "こんにちは、Qt!";  
QString str4(byteArray);  // 使用 std::string 初始化(需要包含 <QString> 和 <string>)  
std::string stdStr = "Hello, Qt!";  
QString str5(stdStr.c_str()); // 或者使用 QString::fromStdString(stdStr)  // 使用 std::wstring 初始化(需要包含 <QString> 和 <string>)  
std::string stdStr1 = L"Hello, Qt!";  
QString str6(stdStr1.c_str()); // 或者使用 QString::fromStdWString(stdStr)  // 使用单个字符初始化  
QString str7(QChar('A'));  // 使用数字初始化(转换为对应的 ASCII 字符)  
QString str8(65); // 结果为 "A"

2、字符串拼接

QString 支持使用 + 操作符来拼接字符串,也可以使用 append() 方法:

QString str1 = "Hello, ";  
QString str2 = "Qt!";  
QString str3 = str1 + str2; // 结果为 "Hello, Qt!"  QString str4 = "Hello, ";  
str4.append("Qt!"); // str4 现在也是 "Hello, Qt!"

3、字符串的查找和替换

QString 提供了 indexOf(), lastIndexOf(), contains(), replace() 等方法来查找和替换字符串中的子串:

QString str = "Hello, Qt!";  
int index = str.indexOf("Qt"); // 返回 "Qt" 的索引位置  
bool containsQt = str.contains("Qt"); // 返回 true  
QString newStr = str.replace("Qt", "World"); // 结果为 "Hello, World!"

4、字符串的分割

使用 split() 方法可以根据指定的分隔符将字符串分割成多个子串,并存储到 QStringList 中:

QString str = "apple,banana,cherry";  
QStringList list = str.split(","); // list 包含 "apple", "banana", "cherry"

5、字符串的转换

QString 提供了多种转换方法,比如转换为 QByteArray(字节数组),std::stringstd::wstringintdouble 等:

QString str = "123";  
int number = str.toInt(); // 转换为整数  
double dbl = str.toDouble(); // 转换为浮点数(注意:这里会失败,因为 "123" 不是有效的浮点数表示)  QByteArray byteArray = str.toUtf8(); // 转换为 UTF-8 编码的字节数组  
std::string stdStr = str.toStdString(); // 转换为 std::string(需要包含 <QString> 和 <string>)
std::string stdWStr = str.toStdWString(); // 转换为 std::string(需要包含 <QString> 和 <string>)

6、字符串的格式化

QString 支持使用 arg() 方法进行字符串的格式化,类似于 C++20 中的格式化字符串(尽管实现方式不同):

QString name = "Alice";  
int age = 30;  
QString greeting = QString("Hello, %1. You are %2 years old.").arg(name).arg(age);  
// 结果为 "Hello, Alice. You are 30 years old."

7、国际化支持

QString 与 Qt 的国际化机制紧密集成,可以使用 tr() 函数进行字符串的翻译:

QString translatedString = tr("Hello, World!");  
// 在.ts文件中为"Hello, World!"提供翻译后,translatedString将显示翻译后的文本

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

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

相关文章

一个网站搞定Adobe系列软件下载安装,良心网站!

Adobe系列软件几乎是每个办公职场人都会用到的软件&#xff0c;比如PDF&#xff0c;PS&#xff0c;AI&#xff0c;PE&#xff0c;PR等&#xff0c;不管你是设计图片&#xff0c;制作编辑音频还是视频&#xff0c;Adobe都有对应的软件。但是对于大部分用户来说&#xff0c;Adobe…

小A点菜

题目描述 小A口袋里只剩 M 元 (M≤10000)&#xff0c;来到一家餐馆点菜吃饭。 餐馆有 N(N≤100) 种菜品&#xff0c;但每种菜只有一份&#xff0c;其中第 i 种售价 ai​ 元 (ai​≤1000) 。 小A奉行 “不把钱花光就不罢休” 的原则&#xff0c;所以他点的菜一定刚好把身上的…

Linux网络:传输层TCP协议(四)拥塞控制及延迟应答

目录 一、拥塞控制 二、延迟应答 一、拥塞控制 虽然 TCP 拥有滑动窗口这个大杀器机制来根据具体情况对发送的数据大小和速度进行实时控制, 能够高效并且可靠的发送大量的数据. 但是如果在双方建立好连接后的刚开始阶段就发送大量的数据。仍然可能引发一些问题. 因为同一个网…

Ubuntu转竖屏,文件解锁和查看mac地址命令记录

又到了摸索ubuntu的时间&#xff0c;记录几个命令. &#xff08;1&#xff09;横屏与竖屏模式互转 1)横屏转竖屏 xrandr -o left xrandr -o right 2)竖屏转回来为横屏 xrandr -o normal (2)文件/文件夹加上了小锁需解锁 1)文件加锁需解锁 sudo chmod 777 yourfilename 2)文件夹…

聊聊sysinfo结构体

sysinfo的定义 sysinfo 结构体的完整定义如下。这个定义包含了一些特定的类型&#xff0c;如 __kernel_long_t 和 __kernel_ulong_t&#xff0c;这些类型是为了在不同架构上提供一致的数据大小而定义的。以下是对这个结构体中每个成员的详细解释&#xff1a; struct sysinfo …

SpringBoot 通过集成 Flink CDC 来实时追踪 MySql 数据变动

简简单单 Online zuozuo:欢迎商业合作 简简单单 Online zuozuo 简简单单 Online zuozuo 简简单单 Online zuozuo 简简单单 Online zuozuo :本心、输入输出、结果 简简单单 Online zuozuo :联系我们:VX :tja6288 / EMAIL: 347969164@qq.com 文章目录 SpringBoot 通过集成 …

Ubuntu开机自启配置(基于service:以ROS和docker为例)

Ubuntu开机自启配置(以ROS和docker为例) 前言1. service介绍1.1 service命令的基本用法1.2. service命令的常用操作1.3. service命令与systemd的兼容性2. Example之开机启动ROS2.1 创建服务单元文件2.1.1 新建`.service`文件2.1.2 编写`.service`文件2.2 重新加载systemd配置…

怎么给PDF文件加密码?关于PDF文件加密的四种方法推荐

怎么给PDF文件加密码&#xff1f;给PDF文件加上密码是保护文件安全的一种重要方法&#xff0c;特别是当需要在不受授权的访问下保护敏感信息时。这个过程不仅仅是简单地设置密码&#xff0c;而是涉及到对文档内容和访问控制的深思熟虑。加密PDF文件可以有效防止未经授权的用户查…

杂谈(杂鱼谈论c语言)——2.大小端字节序

⼤⼩端字节序和字节序判断 当我们了解了整数在内存中存储后&#xff0c;我们调试看⼀个细节&#xff1a; #include <stdio.h> int main() {int a 0x11223344;return 0; } 调试的时候&#xff0c;我们可以看到在a中的 0x11223344 这个数字是按照字节为单位&#xff0c;…

creality ender2的3D打印经验教训

创想云-3D打印模型库-一体化3D打印平台 1.开机后要放一张白纸进行检查&#xff0c;看看打印头立平台的距离&#xff0c;如果太近&#xff0c;会灼烧平台&#xff0c;会造成下面的结果&#xff1a; 2.下载模型&#xff0c;可以在线切片&#xff0c;要看看是否要支撑 没有支撑可…

构建云原生Java应用

引言 云原生技术正在改变软件开发和部署的方式。云原生应用利用了云计算的优势&#xff0c;如弹性、可扩展性和高可用性。对于Java开发者来说&#xff0c;构建云原生应用意味着需要采用微服务架构、服务网格、持续部署等技术。本文将探讨如何设计和实现云原生Java应用。 云原…

vulntarget-a

实际部署之后的win7 ip: 192.168.127.128 具体攻击过程如下 win7 扫描服务 使用fscan扫描win 7中的服务以及漏洞 ./fscan -h 192.168.127.128 扫出来一个ms17-010以及通达oa的漏洞&#xff0c;既然有永恒之蓝的&#xff0c;直接上MSF就行了 msf6 > search ms17-010 msf6…

Bouncy Castle集成SM2与SM3

在Bouncy Castle库中&#xff0c;SM2和SM3是两种分别用于非对称加密和数字签名的密码算法&#xff0c;它们也可以结合使用&#xff0c;形成一种高安全性的加密签名方案&#xff0c;即SM2withSM3。以下是对SM2SM3的详细解释&#xff1a; 一、SM2算法 SM2是一种由中国国家密码管…

由CANoe自带协议栈在TCP断开连接时同时发送两条FIN报文引起的注意事项

在我写这篇文章CAPL如何在底层模拟TCP Server端断开TCP连接时,我发现了一个奇怪的现象。我为了使用CAPL组装报文的方式实现TCP Server断开连接的过程,插入一个网络节点作为Client端。为了让Client能够发起连接和发起断开连接,给网络节点配置了独立的TCP/IP Stack,也就是CAN…

D. Fun(cf962div3)

题意&#xff1a;找出满足abacbc<n&&abc<x的a&#xff0c;b&#xff0c;c的个数 分析&#xff1a;遍历a&#xff0c;遍历符合条件的b&#xff0c;找出两个式子c的最大值的最小值相加。 代码&#xff1a; #include<bits/stdc.h> using namespace std; ty…

学前教育优化算法,原理详解,MATLAB代码免费获取

学前教育优化算法&#xff08;Preschool Education Optimization Algorithm&#xff0c;PEOA)是一种受学前教育过程中孩童的活动行为启发而提出的元启发式优化算法。学前教育在儿童的早期发展中起着至关重要的作用&#xff0c;并为他们未来的学习旅程奠定基础。作为幼儿学习者发…

算法:常见时间复杂度

常见时间复杂度 O(1) - 常数时间复杂度O(log n) - 对数时间复杂度O(n) - 线性时间复杂度O(n log n) - 线性对数时间复杂度O(n^2) - 平方时间复杂度O(2^n) - 指数时间复杂度O(n!) - 阶乘时间复杂度 O(1) - 常数时间复杂度 定义&#xff1a;算法的运行时间与输入规模无关&#x…

【JavaScript】详解Day.js:轻量级日期处理库的全面指南

文章目录 一、Day.js简介1. 什么是Day.js&#xff1f;2. 安装Day.js 二、Day.js的基本用法1. 创建日期对象2. 格式化日期3. 解析日期字符串4. 操作日期5. 比较日期 三、Day.js的高级功能1. 插件机制2. 国际化支持 四、实际应用案例1. 事件倒计时2. 日历应用 在JavaScript开发中…

Android SurfaceFlinger——GraphicBuffer的生成(三十二)

通过前面的学习我们知道,在 SurfaceFlinger 中使用的生产者/消费者模型,Surface 做为生产者一方存在如下两个比较重要的函数: dequeueBuffer:获取一个缓冲区(GraphicBuffer),也就是 GraphicBuffer 生成。queueBuffer :把缓冲区(GraphicBuffer)放入缓冲队列中。 …

k3s节点内的服务发现与负载均衡

K3s 是一个轻量级的 Kubernetes 发行版&#xff0c;它简化了 Kubernetes 的安装和管理&#xff0c;同时保持了与 Kubernetes API 的兼容。在 K3s 中&#xff0c;服务发现与负载均衡的机制与标准的 Kubernetes 非常相似。以下是 K3s 中节点内服务发现与负载均衡的主要机制&#…