QT学习:字符串类QString
标准C++提供了两种字符串:一种是c语言风格的以“\0”字符结尾的字符数组:另一种是字符串类String。而Qt字符串类QString的功能更强大。
QString类保存16位Unicode值,提供了丰富的操作、查询和转换等函数。该类还进行了使用隐式共享高效的内存分配策略等多方面的优化。
一、操作字符串
字符串有如下几个操作符。
(1)”+“操作符用于组合两个字符串,并提供了一个”+=“操作符用于将一个字符串追加到另一个字符串的末尾,代码如图所示:
QString str1 = "Welcome ";
str1=str1+"to you"!
QString str2="Hello, "
str2+="World! ";
(2)QString::append()函数具有与“+=”操作符同样的功能,也是在一个字符串的末尾追加另一个字符串,代码如下:
QString str1= "Welcome ";
Qstring str2 = "to ";
str1.append(str2);
str1. append("you!");
//str1=”Welcome to you!"
(3)QString::sprintf()的功能是组合字符串,此函数支持的格式定义符与c++中的sprintf()是一样的,代码如下:
QString str;
str.sprintf ("%s"," welcome ") ;//str=" welcome "
str.sprintf ("%s",”to you! ") ;//str=”to you! "
str.sprintf ("%s%s", ”Welcome ","to you! ") ;//str=”Welcome to you! "
(4)QString::arg()函数是另一种方便的字符串组合方式, 此函数的重载可以处理很多的数据类型。此外,一些重载具有额外的参数对字段的宽度、数字基数或者浮点数精度进行控制。通常,相对于QString::sprintf()函数,QStrig:arg()函数是个比较好的解决方案,因为其类型安全,完全支持Unicode,并且允许改变"%n"参数的顺序。例如:
QString str;
str=QString("%1 was born in %2.") .arg ("John") .arg(1998) ;//str="John was born in1998.”
(5)其它组合字符串的方法:
insert()函数:在原字符串特定的位置插入身个字符串。
prepend()函数:在原字符串的开头插入另一个字符串。
replace()函数:用指定的字符串代替原字符事中的某些字符。
(6)有时我们需要取出字符串两端的空白
QString:trimmed()函数:移除字符串两端的空白字符。
QString:simplifed()函数:移除字符串两端的空白字符,使用单个空格字符“ ”代替字符串中出现的空白字符。
例如:
QString str="Welcome \t to \n you! ”;
str=str . trimmed() ;
//str="Welcome \t to \n you!"
在上述代码中,如果使用str=str.simplified(), 则str的结果是“Welcome to you!"。
二、查询字符串数据
(1)QString::startsWith()函数:判断一个字符串是否以某个字符串开头。此函数具有两个参数。第一个参数指定了一 个字符串,第二个参数指定是否大小写敏感(默认情况下,是大小写敏感的),代码如下:
QString str="Welcome to you! ";
str. startsWith ("Welcome" , Qt: :CaseSensitive); / /返回true
str.startsWith ("you", Qt: :CaseSensitive) ;/ /返回false
(2)QString::endsWith()函数:类似于QString::startsWith()函数,此函数的作用是判断一个字符串是否以某个字符串结尾。
(3) QString:contains()函数;判断一个指定的字符串是否出现过,代码如下:
QString str=" Welcome to you!” ;
str. contains ("Welcome", Qt: :CaseSensitive);//返回true
(4)
operator<(const QString&):比较一个字符串是否小于另一个字符串。如果是,则返回true。
operator<=(const QString&):比较一个字符串是否小于等于另一个字符串。 如果是,则返回true。
operator==(const QString&):比较两个字符串是否相等。如果相等,则返回true,
operator>=(const QString&)::比较一个字符串是否大于等于另 一个字符串。如果是,则返回true。
localeAwareCompare(const QString&,const QString&):静态函数,比较前后两个字符串。如果前面字符串小于后面字符串,则返回负整数值;如果等于则返回0;如果大于则返回正整数值。
compare(constQString&,constQString&,Qt:CaseSensitivity):该函数可以指定是否进行大小写的比较。
三、字符串的转换
(1)Qtring:tolnt0函数:将字符串转换为整型数值,类似函数还有toFloat()、toDonble()、toLong()、toLongLong()等。代码如下:
QString str="125";
bool ok;
int hex=str. toInt (&ok,16) ;//ok=true,hex= 299
int dec=str. toInt (&ok, 10) ;//ok=true, dec=125
(2 )QString提供的字符编码集的转换函数将会返回个const char* 类型版本的QByteArray。转换函数有如下几种:
toAscii():返回一个ASCII编码的8位字符串。
toLatin1:返回一个Latin-1 编码的8位字符串。
toUtf8():返回一个UTF-8编码的8位字符串。
toLocal8Bit():返回一个系统本地编码的8位字符串。
QT学习:字符串类QString相关推荐
- Qt学习笔记之QString
标准C++提供了 两种字符串.一是C风格的以"\0"祝福语胡额为的字符数组,二是字符串类String.详见<深入浅出之string>. 1. 字符串类QString Q ...
- QT学习-核心类列表-33、QtTest 34、QtUiTools
33 - QtTest模块为Qt程序和库提供单元测试的类 34 - QtUiTools模块提供类去操作由Qt Designer创建的窗口 - Provides cl ...
- QT学习-核心类列表-4、Qt WebKit Widgets 5、Qt3DCore
4 - Qt WebKit Widgets模块提供一个C++类的网页浏览器引擎,与网页内容进行交互 5 - Qt3DCore模块包含支持近实时的仿真系统的功能 Qt3D ...
- QT学习-核心类列表-30、QtSerialPort
30 - QtSerialPort模块提供C++类列表能访问连续的端口 - List of C++ classes that enable access to a serial ...
- Qt学习笔记之 字符串类型小结
1. Qt常用字符串类型 1.1 QString QString是Unicode编码的字符串,存储一系列16位的QChar,每一个QChar对应一个Unicode 4.0编码的字符,详见<Qt学 ...
- QT学习笔记(摘抄)
QT学习笔记-1.QT主要的对象 说来惭愧学习c++很长时间了一直没有使用c++开发过软件界面 所以现在想认认真真的学习一个c++图形界面框架库 本来想学习Xwidget但是这个资料不大好找 有啥问题 ...
- QT学习笔记(十一):QString类
QT学习笔记(十一):QString类 1.概述 2.编辑操作 3.查询操作 3.转换操作 1.概述 1.1 QString 类是 Qt 中用于表示字符串的类,实现在 QtCore 共享库中.QStr ...
- 【QT学习】QRegExp类正则表达式(一文读懂)
文章目录 前言 一.QRegExp简介 二.元字符及通配模式 1.元字符 2.通配模式 三.QRegExp构造和方法 1.默认构造函数 2.模式构造函数 3. isValid() 函数 4. case ...
- Qt扫盲-QDir类的学习和使用
Qt5的QDir类的学习 文章目录 Qt5的QDir类的学习 概述: 相对路径与绝对路径 相对性判断 存在性判断 相对路径转绝对路径 导航和路径操作 获取和设置QDir的值 切换路径 新建删除重命名文 ...
最新文章
- python入门经典必备推荐基础教程
- SDR、DDR、QDR存储器的比较
- delete 误删了全表数据
- .Net Core建站(2):EF Core+CodeFirst数据库迁移
- 前端学习(1989)vue之电商管理系统电商系统之渲染商品列表数据
- Elasticsearch 基本介绍及其与 Python 的对接实现
- C# 面向对象之多态
- [翻译 EF Core in Action 1.7] MyFirstEfCoreApp访问的数据库
- Zabbix实战-简易教程--拓扑图(Maps)
- 移动端高清适配方案(解决图片模糊问题、1px细线问题)
- 卫健委:不存在因流感引起大量坏死性脑病的现象
- 自学JAVA-11:IO流
- 红包小游戏php源码,H5抢红包 小游戏源码
- Android NDK 下载地址
- uni-app项目的启动
- 关于防范ONION勒索软件病毒攻击的解决办法
- 盘点:2017年GitHub上30个优秀的机器学习项目
- 一个全栈工程师要掌握哪些技能
- Java.util包简单总结
- 【推文】人间清醒VS梅花痣俏郎君
热门文章
- 巧用词语角色:基于目标自适应图的跨目标立场检测
- 强化学习之基于伪计数的探索算法
- 步入2021,大热的GNN会在哪些应用领域大展拳脚呢?
- 经典论文复现 | ICML 2017大热论文:Wasserstein GAN
- 二分图最大权匹配 KM算法
- 并查集(Union-Find-Set)简洁而高效地处理连通分量的查询与合并
- The MySQL server is running with the --secure-file-priv option so it cannot execute this statement
- C#——Circle(圆)类
- Baby Coins
- linux改变文件夹权限吗,linux改变文件/文件夹权限