标准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相关推荐

  1. Qt学习笔记之QString

    标准C++提供了 两种字符串.一是C风格的以"\0"祝福语胡额为的字符数组,二是字符串类String.详见<深入浅出之string>. 1. 字符串类QString Q ...

  2. QT学习-核心类列表-33、QtTest 34、QtUiTools

    33    -    QtTest模块为Qt程序和库提供单元测试的类 34    -    QtUiTools模块提供类去操作由Qt Designer创建的窗口    -    Provides cl ...

  3. QT学习-核心类列表-4、Qt WebKit Widgets 5、Qt3DCore

    4    -    Qt WebKit Widgets模块提供一个C++类的网页浏览器引擎,与网页内容进行交互 5    -    Qt3DCore模块包含支持近实时的仿真系统的功能     Qt3D ...

  4. QT学习-核心类列表-30、QtSerialPort

    30    -    QtSerialPort模块提供C++类列表能访问连续的端口    -    List of C++ classes that enable access to a serial ...

  5. Qt学习笔记之 字符串类型小结

    1. Qt常用字符串类型 1.1 QString QString是Unicode编码的字符串,存储一系列16位的QChar,每一个QChar对应一个Unicode 4.0编码的字符,详见<Qt学 ...

  6. QT学习笔记(摘抄)

    QT学习笔记-1.QT主要的对象 说来惭愧学习c++很长时间了一直没有使用c++开发过软件界面 所以现在想认认真真的学习一个c++图形界面框架库 本来想学习Xwidget但是这个资料不大好找 有啥问题 ...

  7. QT学习笔记(十一):QString类

    QT学习笔记(十一):QString类 1.概述 2.编辑操作 3.查询操作 3.转换操作 1.概述 1.1 QString 类是 Qt 中用于表示字符串的类,实现在 QtCore 共享库中.QStr ...

  8. 【QT学习】QRegExp类正则表达式(一文读懂)

    文章目录 前言 一.QRegExp简介 二.元字符及通配模式 1.元字符 2.通配模式 三.QRegExp构造和方法 1.默认构造函数 2.模式构造函数 3. isValid() 函数 4. case ...

  9. Qt扫盲-QDir类的学习和使用

    Qt5的QDir类的学习 文章目录 Qt5的QDir类的学习 概述: 相对路径与绝对路径 相对性判断 存在性判断 相对路径转绝对路径 导航和路径操作 获取和设置QDir的值 切换路径 新建删除重命名文 ...

最新文章

  1. python入门经典必备推荐基础教程
  2. SDR、DDR、QDR存储器的比较
  3. delete 误删了全表数据
  4. .Net Core建站(2):EF Core+CodeFirst数据库迁移
  5. 前端学习(1989)vue之电商管理系统电商系统之渲染商品列表数据
  6. Elasticsearch 基本介绍及其与 Python 的对接实现
  7. C# 面向对象之多态
  8. [翻译 EF Core in Action 1.7] MyFirstEfCoreApp访问的数据库
  9. Zabbix实战-简易教程--拓扑图(Maps)
  10. 移动端高清适配方案(解决图片模糊问题、1px细线问题)
  11. 卫健委:不存在因流感引起大量坏死性脑病的现象
  12. 自学JAVA-11:IO流
  13. 红包小游戏php源码,H5抢红包 小游戏源码
  14. Android NDK 下载地址
  15. uni-app项目的启动
  16. 关于防范ONION勒索软件病毒攻击的解决办法
  17. 盘点:2017年GitHub上30个优秀的机器学习项目
  18. 一个全栈工程师要掌握哪些技能
  19. Java.util包简单总结
  20. 【推文】人间清醒VS梅花痣俏郎君

热门文章

  1. 巧用词语角色:基于目标自适应图的跨目标立场检测
  2. 强化学习之基于伪计数的探索算法
  3. 步入2021,大热的GNN会在哪些应用领域大展拳脚呢?
  4. 经典论文复现 | ICML 2017大热论文:Wasserstein GAN
  5. 二分图最大权匹配 KM算法
  6. 并查集(Union-Find-Set)简洁而高效地处理连通分量的查询与合并
  7. The MySQL server is running with the --secure-file-priv option so it cannot execute this statement
  8. C#——Circle(圆)类
  9. Baby Coins
  10. linux改变文件夹权限吗,linux改变文件/文件夹权限