QString详解
QString存储16位Qchar(Unicode)字符串
QString使用隐式共享(copy-on-write)来提高性能。
什么是Unicode?
unicode是一种国际标准,支持当今使用的大多数操作系统,他是US-ASCII和Latin-1的超集(与子集相同字符编码相同)
QString字符串的创建
#include "mainwindow.h"#include <QApplication>int main(int argc, char* argv[])
{// QApplication a(argc, argv);QString b;QString c { "lave" }; //大括号,括住代表初始化c = "cest";c = ("ce");//如果是std::string字符串,需要使用c_str();转换std::string c1 = "c1";QString c2 = c1.c_str();qDebug() << "C2=" << c2;std::string s1 = "s1";QString s2 = QString::fromLatin1(s1.data(), s1.size());// QString s2 = QString::fromStdString(s1);qDebug() << "s1.data=" << s1.data() << " s1.size=" << s1.size(); //获取s1的数据和大小qDebug() << "s2=" << s2;char c3[] = "a array";QString s3 = QString(c3);qDebug() << "s3=" << s3;b.append("class"); //后面添加b.prepend("我"); //前面添加qDebug() << "c=" << c;qDebug() << "b=" << b;qDebug() << "this is string has " << b.count() << "characters"; // b.count()获取字符长度,中文占一个qDebug() << b.toUpper(); //转为大写qDebug() << b.toLower(); //小写qDebug() << b[0]; //可以修改qDebug() << b.at(1); //不可修改qDebug() << b[12]; //超出,报错// return a.exec();
}
构建字符串
//构造字符串QString s1 = "这是第%1个例子";int n = 7;qDebug() << s1.arg(n); //&1代表占位符QString s2 = "We have %1 lemons and %2 oranges";double ln = 1.2;double on = 3;qDebug() << s2.arg(ln).arg(on);
子字符串
QString s1 = "The Right Left";qDebug() << s1.right(5); //从右边取5个qDebug() << s1.left(4); //从左边取4个
遍历字符串
需要添加命名空间
using namespace Qt;
#include "mainwindow.h"#include <QApplication>
#include <QTextStream>using namespace Qt;int main(int argc, char* argv[])
{QString s1 = "我有一个梦想!";QTextStream out(stdout); //标准输出out.setEncoding(QStringConverter::System); //设置编码格式,为系统编码//方式一:// for (QChar qc : s1) { //遍历 范围for// out << qc << "";// }//方式二:// for (QChar* it = s1.begin(); it != s1.end(); it++) {// out << *it << "";// }//方式三:for (int i = 0; i < s1.size(); i++) {out << s1.at(i) << ""; //at比[]快,因为at只读}out << endl;return 0;
}
字符串比较
QString::compare返回整型:
0表示相等
负数表示小于
正数表示大于
#include "mainwindow.h"#include <QApplication>
#include <QTextStream>
using namespace Qt;
#define STR 0 //定义宏int main(int argc, char* argv[])
{const int STR_EQUAL = STR;QString s1 = { "Rain" };QString s2 = { "rain" };QString s3 = { "rain\n" };if (QString::compare(s2, s3) == 0) {qDebug() << "s2和s3相等";} else {qDebug() << "s2和s3不相等";}if (QString::compare(s1, s2, Qt::CaseInsensitive) == STR_EQUAL) { //大小写不敏感qDebug() << "s2和s3相等";} else {qDebug() << "s2和s3不相等";}s3.chop(1); //从尾部删除1个字符return 0;
}
字符类型
字符分为:数字,字母,空白字符,和标点符号
QChar 有 isDigit、isleter、 isSpaec 、isFunt函数
#include "mainwindow.h"#include <QApplication>
#include <QTextStream>
using namespace Qt;
#define STR 0 //定义宏int main(int argc, char* argv[])
{const int STR_EQUAL = STR;QString s1 = { "7 while ,3 red roces." };int digits = 0, letters = 0, spaces = 0, puncts = 0; //赋值,不可以使用,分开,必须全部for (QChar ch : s1) {if (ch.isDigit()) {digits++;} else if (ch.isLetter()) {letters++;} else if (ch.isSpace()) {spaces++;} else if (ch.isPunct()) {puncts++;}}qDebug() << QString("There are %1 characters").arg(s1.count());qDebug() << QString("There are %1 digits").arg(digits);qDebug() << QString("There are %1 letters").arg(letters);qDebug() << QString("There are %1 spaces").arg(spaces);qDebug() << QString("There are %1 puncts").arg(puncts);return 0;
}
字符串类型转换
#include "mainwindow.h"#include <QApplication>
#include <QTextStream>
using namespace Qt;
#define STR 0 //定义宏int main(int argc, char* argv[])
{const int STR_EQUAL = STR;QString s1 = { "12" };QString s2 = { "15" };QString s3, s4;qDebug() << s1.toInt() + s2.toInt(); //转为整型int n1 = 30;int n2 = 40;qDebug() << s3.setNum(n1) + s4.setNum(n2); //数字变为字符串QString s5 = "This is ";s5.remove(2, 1); //在第2个位置删除1个 "ths is "s5.replace(5, 1, "c"); // "ths ic "qDebug() << s5.toLower();qDebug() << s5.toUpper();QString allText = "<\"一级标题\">";allText.toHtmlEscaped(); //将纯文本字符串转为具有html元字符的HTML字符串qDebug() << allText;QString field1 { "name" };qDebug() << field1.rightJustified(10, '.') << "Robert"; //右对齐return 0;
}
相关文章:

QString详解
QString存储16位Qchar(Unicode)字符串 QString使用隐式共享(copy-on-write)来提高性能。 什么是Unicode? unicode是一种国际标准,支持当今使用的大多数操作系统,他是US-ASCII和Latin-1的超集(与子集相同字符编码相同…...

SpringCloud微服务
一、微服务架构 1.1、单体应用架构 将项目所有模块(功能)打成jar或者war,然后部署一个进程 优点: 1:部署简单:由于是完整的结构体,可以直接部署在一个服务器上即可。 2:技术单一:项目不需要复杂的技术栈,往往一套熟悉的技术栈就可以完成开…...

Hive 连接及使用
1. 连接 有三种方式连接 hive: cli:直接输入 bin/hive 就可以进入 clihiveserver2、beelinewebui 1.1 hiveserver2/beeline 1、开启 hiveserver2 服务 // 前台运行,当 beeline 输入命令时,服务端会返回 OK [roothadoop1 bin]…...

android libavb深入解读
1、vbmeta结构解析 2、 libavb代码解读 代码地址https://cs.android.com/android/platform/superproject/+/master:external/avb/libavb/ 解析参考AVB源码学习(四):AVB2.0-libavb库介绍1_摸肚子的小胖子的博客-CSDN博客 这篇blog将会更加深入,掌握avb流程。 2.1、avb_slot_…...

【面试题】对闭包的理解?什么是闭包?
大厂面试题分享 面试题库后端面试题库 (面试必备) 推荐:★★★★★地址:前端面试题库闭包的背景由于js中只有两种作用域,全局作用域和函数作用域,而在开发场景下,将变量暴露在全局作用域下的时候…...

笔试题-2023-乐鑫-数字IC设计【纯净题目版】
回到首页:2023 数字IC设计秋招复盘——数十家公司笔试题、面试实录 推荐内容:数字IC设计学习比较实用的资料推荐 题目背景 笔试时间:2022.09.01应聘岗位:数字IC设计工程师笔试时长:60min笔试平台:nowcoder牛客网题目类型:单选题(2道)、不定项选择题(7题)、问答题(…...

antd日期组件时间范围动态跟随
这周遇到了一个很诡异但又很合理的需求。掉了一周头发,死了很多脑细胞终于上线了。必须总结一下,不然对不起自己哈哈哈。 一、需求描述 默认当前日期时间不可清空。 功能 默认时间如下: 目的:将时间改为 2014-08-01 ~ 2014-08…...

mysql一条sql语句的执行过程
sql的具体执行过程 客户端发送一条查询给服务器服务器下先检查查询缓存,如果命中了缓存,返回缓存中的结果否则就需要服务器端进行sql的解析、预处理,再由优化器生成对应的执行计划根据执行计划,调用存储引擎的api来执行查询将结果…...

SaaS是什么,和多租户有什么关系?
空间数据又称几何数据,用来表示物体的位置,形态,大小分布等各方面的信息,是对现实世界中存在的具有定位意义的事物和现象的定量描述。 多租户是SaaS领域特有的产物。 SaaS服务是部署在云上的,客户可以按需购买&#…...

C语言---字符串函数总结
🚀write in front🚀 📝个人主页:认真写博客的夏目浅石. 🎁欢迎各位→点赞👍 收藏⭐️ 留言📝 📣系列专栏:夏目的C语言宝藏 💬总结:希望你看完之…...

MySQL-表的基本操作
一、创建数据表创建数据表是指在已经创建好的数据库中建立新表。创建数据表的过程是规定数据列的属性的过程,同时也是实施数据完整性约束的过程。创建表之前应先使用语句{use 数据库名} 进入到指定的数据库,再执行表操作。创建表语法:CREATE TABLE <表…...

开篇之作—闲聊几句AUTOSAR
背景信息 步入职场已有些许年头,遇到过不少的人,经历过不算多的事情,也走过一些地方。现在坐下来想想,觉得一路走过总是行色匆匆,都来不及停下来驻足路边的风景,抑或是回头看看身后的精彩。 现在有些庆幸的是,加入了这个汽车这个行业,从事着汽车电子开发领域,也因此…...

02- 天池工业蒸汽量项目实战 (项目二)
忽略警告: warnings.filterwarnings("ignore") import warnings warnings.filterwarnings("ignore") 读取文件格式: pd.read_csv(train_data_file, sep\t) # 注意sep 是 , , 还是\ttrain_data.info() # 查看是否存在空数据及数据类型train_data.desc…...

LeetCode-111. 二叉树的最小深度
目录题目分析递归法题目来源111. 二叉树的最小深度题目分析 这道题目容易联想到104题的最大深度,把代码搬过来 class Solution {public int minDepth(TreeNode root) {return dfs(root);}public static int dfs(TreeNode root){if(root null){return 0;}int left…...

git常用命令
(一)克隆代码(clone):将远程仓库代码克隆到本地仓库 克隆远程仓库某个分支 git clone -b 远程分支名称 https://github.com/master/master.git 本地文件名称 克隆远程仓库默认分支 git clone https://github.com/mas…...

2022年12月电子学会Python等级考试试卷(一级)答案解析
青少年软件编程(Python)等级考试试卷(一级) 一、单选题(共25题,共50分) 1. 关于Python语言的注释,以下选项中描述错误的是?( ) A. Python语言有两种注释方式&…...

大数据未来会如何发展
大数据应用的重要性,自全国提出“数据中国”的概念以来,我们周围默默地在发挥作用的大数据逐渐深入人们的心中,大数据的应用也越来越广泛,具体到金融、汽车、餐饮、电信、能源、体育和娱乐等领域 为什么大数据技术那么火…...

2022黑马Redis跟学笔记.基础篇(一)
2022黑马Redis跟学笔记.基础篇 一1.Redis入门1.1.认识NoSQL1.1.1.结构化与非结构化1.1.2.关联和非关联1.1.3.查询方式1.1.4.事务1.1.5.总结1.2.认识Redis1.3.安装Redis步骤一:安装Redis依赖步骤二:上传安装包并解压步骤三:启动(1).默认启动(2…...

【Spring(十一)】万字带你深入学习面向切面编程AOP
文章目录前言AOP简介AOP入门案例AOP工作流程AOP切入点表达式AOP通知类型AOP通知获取数据总结前言 今天我们来学习AOP,在最初我们学习Spring时说过Spring的两大特征,一个是IOC,一个是AOP,我们现在要学习的就是这个AOP。 AOP简介 AOP:面向切面编程,一种编程范式&#…...

基于Java+SpringBoot+Vue+uniapp前后端分离图书阅读系统设计与实现
博主介绍:✌全网粉丝3W,全栈开发工程师,从事多年软件开发,在大厂呆过。持有软件中级、六级等证书。可提供微服务项目搭建、毕业项目实战、项目定制✌ 博主作品:《微服务实战》专栏是本人的实战经验总结,《S…...

2021年新公开工业控制系统严重漏洞汇总
声明 本文是学习ITOT一体化工业信息安全态势报告(2019). 而整理的学习笔记,分享出来希望更多人受益,如果存在侵权请及时联系我们 工业互联网安全威胁 2021年新公开工业控制系统严重漏洞 缓冲区溢出漏洞 缓冲区溢出(buffer overflow&…...

Canvas鼠标滚轮缩放以及画布拖动(图文并茂版)
Canvas鼠标滚轮缩放以及画布拖动 本文会带大家认识Canvas中常用的坐标变换方法 translate 和 scale,并结合这两个方法,实现鼠标滚轮缩放以及画布拖动功能。 Canvas的坐标变换 Canvas 绘图的缩放以及画布拖动主要通过 CanvasRenderingContext2D 提供的 …...

[ECCV 2020] FGVC via progressive multi-granularity training of jigsaw patches
Contents IntroductionProgressive Multi-Granularity (PMG) training frameworkExperimentsReferencesIntroduction 不同于显式地寻找特征显著区域并抽取其特征,作者充分利用了 CNN 不同 stage 输出的特征图的语义粒度信息,并使用 Jigsaw Puzzle Generator 进行数据增强来帮…...

Python推导式
列表(list)推导式 [remove for source in xx_list]或者[remove for source in xx_list if condition] 实例: names[Bob,Mark,Mausk,Johndan,Wendy] new_names[name.upper() for name in names if len(name)<5] print(new_names)即迭代列…...

Java列表List的定查改增删操作
Java列表List的定查改增删操作定义查找遍历元素与下标互查修改增加删除java.util中提供了三种常用的集合类,列表List、集合Map和字典Set。这些集合类相较于数组有更多功能,并且都可以通过Iterator(迭代器)来访问。 在这篇博客中&…...

day03java语言特性 JDK、JRE、JVM
1、Java语言的特性 1.1、简单性在Java语言当中真正操作内存的是:JVM(Java虚拟机)所有的java程序都是运行在Java虚拟机当中的。而Java虚拟机执行过程中再去操作内存。对于C或者C来说程序员都是可以直接通过指针操作内存的。C或者C更灵活&…...

HydroD 实用教程(二)有限元模型
目 录一、前言二、模型种类三、单元类型四、FEM文件五、参考文献一、前言 SESAM (Super Element Structure Analysis Module)是由挪威船级社(DNV-GL)开发的一款有限元分析(FEA)系统,它以 GeniE、…...

Java中的Set集合
Set不能存储重复元素,元素无序(指的是不按照添加的顺序,List集合是按照添加顺序存储的)hashSet注:源码底层是hashMap实现的,因为hashMap是双列的,其中键是不能重复的,而hashSet是单列…...

【RabbitMQ五】——RabbitMQ路由模式(Routing)
RabbitMQ路由模式前言RabbitMQ模式的基本概念为什么要使用Rabbitmq 路由模式RabbitMQ路由模式组成元素路由模式完整代码Pom文件引入RabbtiMQ依赖RabbitMQ工具类生产者消费者1消费者2运行结果截图前言 通过本篇博客能够简单使用RabbitMQ的路由模式。 本篇博客主要是博主通过官网…...

【C语言】宏定义 结构体 枚举变量的用法
目录 一、数据类型 二、C语言宏定义 三、C语言typedef重命名 四、 #define与typedef的区别 五、结构体 六、枚举变量 补充学习一点STM32的必备基础知识 一、数据类型 二、C语言宏定义 关键字:#define 用途:用一个字符串代替一个数字,…...