网站首页 > 技术文章 正文
字符串类(QString):
在Qt官方文档中是这样描述QString的:The QString class provides a Unicode character string.
我们可以将做C++中的string,但QString提供了更多有用的操作
在使用QString时需要包含头文件 #include <QString>
QString的常见操作:
组合字符串:
1.使用二元操作符"+"组合两个字符串
QString str1= "Hello", str2("World");
QString str3 = str1 + str2 + "!";
qDebug() << str3;
2.使用"+="操作符
QString str1 = "Hello";
str1 += " World!";
qDebug() << str1;
3.也可以使用QString::append()函数实现在一个字符串末尾添加一个字符串
QString str1 = "Hello";
str1.append(" World!");
qDebug() << str1;
4.使用QString::sprintf()也可以组合字符串,其支持的格式与C++中sprintf()函数定义的一样
QString str1;
str1.sprintf("%s", "Hello ");
str1.sprintf("%s %s", "Hello ", "World!");
qDebug() << str1;
5.相比于QString::sprintf(),QString::arg()或许是个更好的选择,该函数的重载可以处理很
多种数据类型,此外还提供额外的参数对字段宽度、数字基数、浮点数精度进行控制,且它类型
安全,完全支持Unicode,并且允许改变"%n"参数的顺序。
QString str1;
str1 = QString("%1 is a %2.").arg("Bob").arg("boy");
qDebug() << str1;
除了组合字符串之外,还提供了很多其他操作:
QString::insert():在指定位置后插入一个字符串
QString::prepend():在源字符串开头插入一个字符串
QString::replace(): 用指定字符串代替源字符串中的指定内容
QString::trimmed():删除字符串两端的空白字符
QString::simplified(): 删除字符串两端的空白字符,并用单个空白字符代替字符串中出现的空白字符
注意:前面三个函数会对源字符串本身做出更改,而后两个函数返回的是源字符串被操作后所
得内容的一个新的字符串,源字符串本身不会被修改
QString str1 = " AAA BBB CCC ";
qDebug() << str1;
str1.insert(2, "ZZZ");
qDebug() << str1;
str1.prepend("DDD");
qDebug() << str1;
str1.replace("AAA", "111");
qDebug() << str1;
str1 = str1.trimmed();
qDebug() << str1;
str1 = str1.simplified();
qDebug() << str1;
/* 程序输出:
" AAA BBB CCC "
" ZZZAAA BBB CCC "
"DDD ZZZAAA BBB CCC "
"DDD ZZZ111 BBB CCC "
"DDD ZZZ111 BBB CCC"
"DDD ZZZ111 BBB CCC"
*/
查询字符串数据:
1.QString::startsWith()用于判断字符串是否由指定字符串开头,可以设置是否大小写敏感(默认为大小写敏感)
2.QString::endsWith()用于判断字符串是否由指定字符串结尾,可以设置是否大小写敏感(默认为大小写敏感)
3.QString::contains()用于判断字符串内是否含有指定子串
QString str1 = "Hello World!";
if (str1.startsWith("Hello", Qt::CaseSensitive))
qDebug() << "str1 start with Hello";
// 设为大小写不敏感
if (str1.endsWith("world!", Qt::CaseInsensitive))
qDebug() << "str1 end with world";
if (str1.contains("Hello"))
qDebug() << "str1 contains Hello";
/* 程序输出:
str1 start with Hello
str1 end with world
str1 contains Hello
*/
比较两个字符串可以使用:
1.运算符:<、>、==、>=、<=
2.QString::localeAwareCompare(const QString &str1, const QString &str2);
比较两个字符串,若str1大于str2,返回正整数,若str1小于str2,返回负整数,若str1等于str2,返回0
3.QString::compare(const QString &str1, const QString &str2, Qt::CaseSensitive/Qt::CaseInsensitive);
与QString::localeAwareCompare()功能相似,但却可以设置是否大小写敏感(默认敏感)
QString str1 = "AAA", str2 = "BBB", str3 = "Aaa";
if (str1 <= str2)
qDebug() << str1 << "<=" << str2;
else
qDebug() << str1 << ">" << str2;
int result = QString::compare(str1, str3, Qt::CaseInsensitive);
if (result > 0)
qDebug() << str1 << ">" << str3;
else if (result < 0)
qDebug() << str1 << "<" << str3;
else
qDebug() << str1 << "=" << str3;
/*
*输出结果:
* "AAA" <= "BBB"
* "AAA" = "Aaa"
*/
将QString转化为其他类型(此类函数有很多,下面只列出常用的几个,若有需要,可以查看Qt文档):
QString::toInt()
QString::toDouble()
QString::toFloat()
QString::toLong()
QString::toLongLong()
注意:
QString字符串的Empty与NULL,即默认构造函数创建QString与通过QString("")构造时
QString str1, str2("");
if (str1.isEmpty())
qDebug() << "str1 is Empty";
else
qDebug() << "str1 is not Empty";
if (str1.isNull())
qDebug() << "str1 is NULL";
else
qDebug() << "str1 is not NULL";
if (str2.isEmpty())
qDebug() << "str2 is Empty";
else
qDebug() << "str2 is not Empty";
if (str2.isNull())
qDebug() << "str2 is NULL";
else
qDebug() << "str2 is not NULL";
/*
输出结果:
str1 is Empty
str1 is NULL
str2 is Empty
str2 is not NULL
*/
除了上面介绍的函数外,QString还有很多功能强大的函数,可以在Qt文档或QCreator的Help中查看
Qt学习路线:Qt开发技术栈
资料领取:「链接」
猜你喜欢
- 2025-06-24 java文本对比工具源码1(java比较文本相似度)
- 2025-06-24 线上系统性能太差,我手写了字符串切割函数,性能提升10倍以上
- 2025-06-24 redis Scan 踩坑记 key的模糊匹配
- 2025-06-24 50个Java编程技巧,免费送给大家(java编程教程)
- 2025-06-24 Spring Boot中如何设计出一个高效的分布式并发锁?
- 2025-06-24 你只会用 split?试试 StringTokenizer,性能可以快 4 倍
- 2025-06-24 Spring AOP接口限流实战!三行注解解决高并发,代码可复制
- 2025-06-24 最快速度、方便的对象复制工具 Mapper Struct 的高阶应用
- 2025-06-24 Qt数字转QString保留小数点位数的方法
- 2025-06-24 Java泛型中通配符T/E/K/V解析,告别类型焦虑
- 1506℃桌面软件开发新体验!用 Blazor Hybrid 打造简洁高效的视频处理工具
- 482℃MySQL service启动脚本浅析(r12笔记第59天)
- 460℃启用MySQL查询缓存(mysql8.0查询缓存)
- 455℃服务器异常重启,导致mysql启动失败,问题解决过程记录
- 441℃「赵强老师」MySQL的闪回(赵强iso是哪个大学毕业的)
- 436℃Dify工具使用全场景:dify-sandbox沙盒的原理(源码篇·第2期)
- 418℃mysql服务怎么启动和关闭?(mysql服务怎么启动和关闭)
- 416℃MySQL server PID file could not be found!失败
- 最近发表
- 标签列表
-
- cmd/c (64)
- c++中::是什么意思 (83)
- 标签用于 (65)
- 主键只能有一个吗 (66)
- c#console.writeline不显示 (75)
- pythoncase语句 (81)
- es6includes (73)
- windowsscripthost (67)
- apt-getinstall-y (86)
- node_modules怎么生成 (76)
- chromepost (65)
- c++int转char (75)
- static函数和普通函数 (76)
- el-date-picker开始日期早于结束日期 (70)
- js判断是否是json字符串 (67)
- localstorage.removeitem (74)
- vector线程安全吗 (70)
- & (66)
- java (73)
- js数组插入 (83)
- linux删除一个文件夹 (65)
- mac安装java (72)
- eacces (67)
- 查看mysql是否启动 (70)
- 无效的列索引 (74)