QString 是 Qt 编程中常用的类,除了用作数字量的输入输出之外,QString 还有很多其他功能,熟悉这些常见的功能,有助于灵活地实现字符串处理功能。

QString 存储字符串釆用的是 Unicode 码,每一个字符是一个 16 位的 QChar,而不是 8 位的 char,所以 QString 处理中文字符没有问题,而且一个汉字算作是一个字符。

图 1 是对 QString 常用函数的测试运行界面。下面在说明函数功能时,对于同名不同参数的函数,只说明某种参数下的使用实例。


图 1 QString 函数功能测试界面

append() 和 prepend()

append() 在字符串的后面添加字符串,prepend() 在字符串的前面添加字符串,如:

  1. QString str1="卖",str2="拐";
  2. QString str3=str1;
  3. str1.append (str2) ; //str1="卖拐"
  4. str3.prepend (str2) ; //str3="拐卖"

toUpper() 和 toLower()

toUpper() 将字符串内的字母全部转换为大写形式,toLower() 将字母全部转换为小写形式,如:

  1. QString str1="Hello, World", str2;
  2. str2=str1.toUpper(); //str1="HELLO,WORLD"
  3. str2=str1.toLower(); //str1="hello, world"

count()、size() 和 length()

count()、size() 和 length() 都返回字符串的字符个数,这 3 个函数是相同的,但是要注意,字符串中如果有汉字,一个汉字算一个字符。

  1. QString str1="NI 好"
  2. N=str1.count() //N=3
  3. N=str1.size() //N=3
  4. N=str1.length() //N=3

trimmed() 和 simplified()

trimmed() 去掉字符串首尾的空格,simplified() 不仅去掉首尾的空格,中间连续的空格也用一个空格替换。

  1. QString str1=" Are you OK? ", str2;
  2. str2=str1.trimmed () ; //str1="Are you OK? "
  3. str2=str1.simplified(); //str1="Are you OK?"

indexOf () 和 lastIndexOf ()

indexOf() 函数的原型为:

int indexOf (const QString &str, int from = 0 , Qt::CaseSensitivity cs = Qt::CaseSensitive) const

其功能是在自身字符串内查找参数字符串 str 出现的位置,参数 from 是幵始查找的位置,Qt::CaseSensitivity cs 参数指定是否区分大小写。

lastIndexOf() 函数则是查找某个字符串最后出现的位置。

  1. QString str1="G:\Qt5Book\QT5.9Study\qw.cpp";
  2. N=str1.indexOf("5.9"); // N=13
  3. N=str1.lastIndexOf("\\"); //N=21

提示,"\" 是转义字符,如果要查找 "\",需要输入 "\\"。

isNull() 和 isEmpty()

两个函数都判读字符串是否为空,但是稍有差别。如果一个空字符串,只有“\0”,isNull() 返回 false,而 isEmpty() 返回 true;只有未赋值的字符串,isNull() 才返回 true。

  1. QString str1, str2="";
  2. N=str1.isNull () ; // N=true 未赋值字符串变量
  3. N=str2.isNull () ; // N=false 只有"\0"的字符串,也不是 Null
  4. N=str1.isEmpty(); // N=true
  5. N=str2.isEmpty(); // N=true

QString 只要赋值,就在字符串的末尾自动加上 "\0",所以,如果只是要判断字符串内容是否为空,常用 isEmpty()。

contains()

判断字符串内是否包含某个字符串,可指定是否区分大小写。

  1. QString str1="G:\Qt5Book\QT5.9Study\qw.cpp";
  2. N=str1.contains (".cpp", Qt::CaseInsensitive) ; // N=true,不区分大小写
  3. N=str1.contains (".CPP", Qt::CaseSensitive) ; // N=false,区分大小写

endsWith() 和 startsWith()

startsWith() 判断是否以某个字符串幵头,endsWith() 判断是否以某个字符串结束。

  1. QString str1=MG:\Qt5Book\QT5.9Study\qw.cpp";
  2. N=str1.endsWith (".cpp", Qt::CaseInsensitive) ; // N=true,不区分大小写
  3. N=str1.endsWith (".CPP", Qt::CaseSensitive) ; // N=false,区分大小写
  4. N=str1.startsWith ("g: ") ; // N=true,缺省为不区分大小写

left() 和 right()

left 表示从字符串中取左边多少个字符,right 表示从字符串中取右边多少个字符。注意,一个汉字被当作一个字符。

  1. QString str2, str1="学生姓名,男,1984-3-4,汉族,山东";
  2. N=str1.indexOf (",") ; // N=4,第一个","出现的位置
  3. str2=str1.left (N) ; //str2="学生姓名"
  4. N=str1.lastIndexOf (",") ; // N=18,最后一个逗号的位置
  5. str2=str1.right (str1.size()-N-1); //str2=”山东",提取最后一个逗号之后的字符串

section()

section() 函数的原型为:

QString section (const QString &sep, int start, int end = -1, SectionFlags flags = SectionDefault) const

其功能是从字符串中提取以 sep 作为分隔符,从 start 端到 end 端的字符串。

  1. QString str2, str1="学生姓名,男,1984-3-4,汉族,山东";
  2. str2=str1.section (",",0,0); // str2="学生姓名", 第 1 段的编号为 0
  3. str2=str1.section (",",1,1}; // str2="男"
  4. str2=str1.section (",",0,1}; // str2="学生姓名,男"
  5. str2=str1.section (",",4,4); // str2="山东"

QString 还有很多功能函数没有在此介绍,在使用中如果遇到,可查询 Qt 的帮助文件。

Qt QString类及常用函数功能详解相关推荐

  1. C语言 -- string.h中函数功能详解与手动实现 - 02(常用函数memcpy、memmove、strcpy、strdup、strcat、strtok...)

    内容预览 3.5.搬迁类型 --- 函数功能详细说明 :将内存空间中内容移动.复制到另一内存空间 3.6.搬迁类型 --- 函数功能测试与手动实现 3.6.1.memcpy.memccpy 3.6.2 ...

  2. oracle11g 常用函数(Functions)详解

    Oracle11g常用函数(Functions)详解 目录 ABS. 3 ACOS. 3 ADD_MONTHS. 4 ASCII 4 ASCIISTR. 5 ASIN.. 5 ATAN.. 5 ATA ...

  3. C语言math.h中的常用函数实例详解

    1.绝对值 2.取整和取余 3.三角函数 4.反三角函数 5.双曲三角函数 6.指数和对数 7.标准化浮点数 8.多项式 9.数学错误计算处理 1.绝对值 函数原型: int abs(int x); ...

  4. dup2函数功能详解

    如题,如果对dup2函数功能模糊的朋友可以看一看 linux下测试. #include <stdio.h> #include <stdlib.h> /*exit函数*/ #in ...

  5. python itertools模块chain函数功能详解 itertools.chain(*iterable)

    Itertools模块, itertools提供了高效快捷的用于操作迭代对象的函数.通过使用这个模块,可以简化代码. Itertools.chain语法 Itertools.chain(*iterab ...

  6. forcats | fct_reorder2函数功能详解及其在可视化中的应用

    引子 最近在整理forcats工具包中的函数,发现该包只有fct_reorder2()函数的功能不太容易理解,所以单独写一篇推文来介绍它. 根据上篇提到的函数分类,它可以归为「调整类别顺序的函数」,与 ...

  7. np.randon模块,numpy.random模块各函数功能详解,分类描述各个函数功能,生成随机数

    因为网上很多文章都是在依次列举各个函数的功能,并没有做分类,所以记忆上还有使用上都不方便. 本文旨在将功能相似的函数放在一起,以及对它们进行辨析和区分,便于精准地调用.未完待续 最权威的参考来源:Ra ...

  8. Python字典常用函数使用详解(内附详细案例)

    「作者主页」:士别三日wyx   此文章已录入专栏<Python入门到精通>   2021最新版Python小白教程,针对0基础小白和基础薄弱的伙伴学习 提示:点击列表中蓝色「函数名」可直 ...

  9. Python集合常用函数使用详解(内附详细案例)

    「作者主页」:士别三日wyx   此文章已录入专栏<Python入门到精通>   2021最新版Python小白教程,针对0基础小白和基础薄弱的伙伴学习 提示:点击列表中蓝色「函数名」可直 ...

最新文章

  1. Github上十大热门可视化面板!再也不用担心画图啦!
  2. 单例Singleton
  3. 浅谈MVC设计模式和SSH框架的关系
  4. MFC的Button和Static控件
  5. mysql中的double类型_MySQL中float、double、decimal三个浮点类型的区别与总结!
  6. web端功能测试总结(一)
  7. DevOps组织IO专业人员新角色分析与技能提升
  8. JAVA基础——IO流字节流
  9. 字符串旋转 不同解法
  10. python 3模块导入(import)问题一则
  11. ISO27001标准的起源和发展
  12. Smart3D三维建模操作笔记
  13. 垃圾焚化炉发电计算机控制技术,生活垃圾焚烧发电系统优化技术研究
  14. ei会议和ei源刊的区别_ei会议和ei期刊的区别
  15. MySQL——页和索引
  16. matlab 两个数中取小,matlab中取两个数中的较小值
  17. 解决Android Studio 的AVD中的模拟器不能用PC键盘输入的问题
  18. SAP中标准价和移动平均价的学习笔记
  19. 【Java-数据脱敏】使用Java对姓名、手机号码、证件号码进行数据脱敏
  20. 图神经网络的池化操作

热门文章

  1. 机器学习-初级进阶(深度学习-卷积神经网络)
  2. 【Power Query M】Get your own Power Query Editor using Notepad++
  3. Improving Sample Efficiency In Model-Free Reinforcement Learning From Images 论文翻译
  4. 【用例设计】浅谈兼容性测试
  5. JAX-WS创建和JavaAPI发送和处理SOAP消息实例
  6. Android 身份证号码查询、手机号码查询、天气查询
  7. 大量机器学习(Machine Learning)深度学习(Deep Learning)资料
  8. 12年经验资深产品经理领你从“产品小白”走向“产品大牛”
  9. ios备份备忘录到android,IOS系统备忘录怎么把内容同步到安卓手机?
  10. 桶排序算法:topK元素golang实现