C++语言提供了两种字符串的实现:C风格的字符串,以'\0‘结尾;std::string,即标准模版库中的类。Qt则提供了自己的字符串实现:QString,QString不用担心内存分配以及关于'\0'结尾的这些注意事项

另外,与C风格的字符串不同,QString中间是可以包含'\0'符号的,而length()函数则会返回整个字符串的长度,而不仅仅是从开始到'\0'的长度。同Java的String类类似,QString也重载的+和+=运算符。

这两个运算符可以把两个字符串连接到一起,QString可以自动的对占用内存空间进行扩充,这种连接操作是很迅速的

示例:

1  QString str = "User:";2 str += userName + "\n";

QString的append()函数则提供了类似的操作,例如:

1 str = "User:";2 str.append(userName);3 str.append("\n");

使用static的函数number()可以把数字转换成字符串。例如:

1 QString str = QString::number(54.3);

你也可以使用非static函数setNum()来实现相同的目的:

1 QString str; str.setNum(54.3);

而一系列的to函数则可以将字符串转换成其他基本类型,例如toInt(), toDouble(), toLong()等。这些函数都接受一个bool指针作为参数,函数结束之后将根据是否转换成功设置为true或者false:

1 bool ok; double d = str.toDouble(&ok);2 if(ok) { //do something... }

3 else { //do something... }

对于QString,Qt提供了很多操作函数,例如,使用mid()函数截取子串:

1 QString x = "Nine pineapples";2 QString y = x.mid(5, 4);3 //y == "pine" QString z = x.mid(5); /

4 / z == "pineapples"

mid()函数接受两个参数,第一个是起始位置,第二个是取串的长度。如果省略第二个参数,则会从起始位置截取到末尾。正如上面的例子显示的那样。

函数left()和rigt()类似,都接受一个int类型的参数n,都是对字符串进行截取。不同之处在于,left()函数从左侧截取n个字符,而right()从右侧开始截取。下面是left()的例子:

1 QString x = "Pineapple";2 QString y = x.left(4);3 //y == "Pine"

函数startsWith()和endsWith()可以检测字符串是不是以某个特定的串开始或结尾,例如:

1  if (url.startsWith("http:") && url.endsWith(".png")) { }

这段代码等价于

1  if (url.left(5) == "http:" && url.right(4) == ".png") { }

只不过前者要比后者更加清楚简洁,并且性能也更快.

QString还提供了replace()函数供实现字符串的替换功能;trimmed()函数去除字符串两侧的空白字符(注意,空白字符包括空格、Tab以及换行符,而不仅仅是空格);toLower()和toUpper()函数会将字符串转换成小写大写字符串;

remove()和insert()函数提供了删除和插入字符串的能力;simplified()函数可以将串中的所有连续的空白字符替换成一个,并且把两端的空白字符去除,例如" \t ”会返回一个空格" "。

将const char *类型的C风格字符串转换成QString也是很常见的需求,简单来说,QString的+=即可完成这个功能:

1 str += "(1870)";

这里,我们将const char * 类型的字符串" (1870)"转换成为QString类型。

判断字符串是否为空

1 bool QString::isEmpty () const

如:

1 QString().isEmpty(); //returns true

2 QString("").isEmpty(); //returns true

3 QString("x").isEmpty(); //returns false

4 QString("abc").isEmpty(); //returns false

判断字符串是否存在

1 bool QString::isNull () const

如:

1 QString().isNull(); //returns true

2 QString("").isNull(); //returns false

3 QString("abc").isNull(); //returns false

使某个字符填满字符串,也就是说字符串里的所有字符都有等长度的ch来代替。

QString::fill ( QChar ch, int size = -1 )

如:

QString str = "Berlin";

str.fill('z');

// str == "zzzzzz"

str.fill('A', 2);

// str == "AA"

从字符串里查找相同的某个字符串str。

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

如:

QString x = "sticky question";

QString y = "sti";

x.indexOf(y); // returns 0

x.indexOf(y, 1); // returns 10

x.indexOf(y, 10); // returns 10

x.indexOf(y, 11); // returns -1

指定位置插入字符串

QString & QString::insert ( int position, const QString & str )

如:

QString str = "Meal";

str.insert(1, QString("ontr"));

// str == "Montreal"

删除字符串中间某个字符。

QString & QString::remove ( int position, int n )

如:

QString s = "Montreal";

s.remove(1, 4);

// s == "Meal"

替换字符串中的某些字符。

QString & QString::replace ( int position, int n, const QString & after )

如:

QString x = "Say yes!";

QString y = "no";

x.replace(4, 3, y);

// x == "Say no!"

python3怎么使用qstring_QString 的用法相关推荐

  1. python3 yield 大文件_详解Python3中yield生成器的用法

    任何使用yield的函数都称之为生成器,如: def count(n): while n > 0: yield n #生成值:n n -= 1 另外一种说法:生成器就是一个返回迭代器的函数,与普 ...

  2. 详解Python3中yield生成器的用法

    这篇文章主要介绍了详解Python3中yield生成器的用法,是Python入门学习中的基础知识,需要的朋友可以参考下 任何使用yield的函数都称之为生成器,如: def count(n):whil ...

  3. python 匿名函数示例_扣丁学堂Python3开发之匿名函数用法示例详解

    扣丁学堂Python3开发之匿名函数用法示例详解 2018-07-26 14:01:11 1324浏览 今天扣丁学堂Python培训给大家分享关于Python3匿名函数用法,结合实例形式分析了Pyth ...

  4. python3中find函数的用法_Python3正则匹配re.split,re.finditer及re.findall函数用法详解...

    本文实例讲述了Python3正则匹配re.split,re.finditer及re.findall函数用法.分享给大家供大家参考,具体如下: re.split re.finditer re.finda ...

  5. python3 math module_Python math hypot()用法及代码示例

    hypot()函数是Python中的内置数学函数,可返回欧几里得范数, . 用法: hypot(x, y) 参数: x and y are numerical values 返回值: Returns ...

  6. Python3中* 和 ** 运算符的用法是什么

    本篇文章给大家介绍Python3 * 和 ** 运算符的用法.有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助. 在 Python 中,* 和 ** 具有语法多义性,具体来说是有四类用法 ...

  7. python3 Number List 元组 字典 用法区分和总结

    Number 以下实例在变量赋值时 Number 对象将被创建: var1 = 1 var2 = 10 用法: 主要用来存储数值 Number的数据类型是不允许改变的 del 可以删除一些Number ...

  8. Python3 中 sys.argv[ ]的用法解释

    sys.argv[]说白了就是一个从程序外部获取参数的桥梁,这个"外部"很关键,所以那些试图从代码来说明它作用的解释一直没看明白.因为我们从外部取得的参数可以是多个,所以获得的是一 ...

  9. python3 log_Python3 log10()函数简单用法

    描述 log10() 方法返回以10为基数的x对数,x>0. 语法 以下是 log10() 方法的语法: import math math.log10( x ) 注意:log10()是不能直接访 ...

最新文章

  1. Cortex-A9 UART
  2. php面试带项目_PHP面试常用算法(推荐)
  3. 【洛谷】【二分答案+最短路】P1462 通往奥格瑞玛的道路
  4. 57、Design Support Library 介绍及环境搭建
  5. XCODE GDB这个是老版本xcode,新版的是lldb
  6. nagios 监控slave(check_mysql_health插件)
  7. 8.12. 安装 Elasticsearch 2.3
  8. 通俗易懂的 k-means 聚类算法原理及优化(附代码)
  9. java将pdf旋转(亲测有效)
  10. 计算机windows错误恢复,为什么windows错误恢复?
  11. php aria2离线下载器,下载神器——Aria2,打造你自己的离线下载服务器
  12. pytorch实现yolov4_v2(网络模块)
  13. 利用python获取股票折线图_python绘制香农的投资组合折线图
  14. 物联网应用平台开发——项目总结报告
  15. 用趋势突破策略回测CTA
  16. 基于Python实现的论坛帖子情感分析
  17. Pytorch中Parameter的打印和修改
  18. vulnhub靶场——Hacker-Kid-v1-0-1
  19. 全面解读VTL(虚拟磁带库)
  20. 磊科路由器信号按键_磊科无线路由器参数设置教程

热门文章

  1. 2018VR眼镜,今天做了一个测评!
  2. Bootstrap 弹出框
  3. Python语言的基本介绍
  4. 快来看看这几个iPhone手机的实用功能
  5. 折叠屏、5G手机频发背后:物联网时代的角色畅想
  6. 计算机投影仪的作用是什么,投影仪怎么连接电脑?它如何使用
  7. Faster RCNN流程图
  8. 计算机停车场参考文献,停车场管理系统学位论文参考文献 停车场管理系统参考文献有哪些...
  9. sql优化第一天,认识优化器和RBO中的等价改写SQL例子1
  10. matlab的ln函数表示,r软件中ln函数 r语言ln函数