当前位置: 首页 > news >正文

qstring取前几个_QT中QString 类的使用--获取指定字符位置、截取子字符串等

一、字符串连接函数。

1、QString也重载的+和+=运算符。这两个运算符可以把两个字符串连接到一起。

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

str = "User: ";

str.append(userName);

str.append("\n");

二、获取字符串某位置的值。

//

QString中有没有函数能截取出两个指定位置之间的字符串?

QString x = "Nine pineapples";

QString y = x.mid(5, 4);            // y == "pine"

QString z = x.mid(5);               // z == "pineapples"

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

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

1. QString x = "Pineapple";

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

三、获取字符在字符中的位置。

indexOf()

//存在lastIndexOf()函数,返回字符串的最后一次出现的索引?

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

四、可以检测字符串是不是以某个特定的串开始或结尾。

startsWith()    endsWith()

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

{  }

这段代码等价于

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

{  }

五、

字符串替换函数replace();

trimmed()函数去除字符串两侧的空白字符(注意,空白字符包括空格、Tab以及换行符,而不仅仅是空格);

toLower()和toUpper()函数会将字符串转换成小写大写字符串;

remove()和 insert()函数提供了删除和插入字符串的能力;

simplified()函数可以将串中的所有连续的空白字符替换成一个,并且把两端的空白字符去除,例如"   \t   ”会返回一个空格" "。

六、const char *类型的C风格字符串与QString字符之间的转换。

简单来说,QString的+=即可完成这个功能:

str += " (1870)";

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

如果需要显式的转换,可以使用QString的强制转换操作,或者是使用函数fromAscii()等。

为了将QString类型转成const char *字符串,需要进行两步操作,一是使用toAscii()获得一个QByteArray类型对象,

然后调用它的data()或者constData()函数,

例如:

printf("User: %s\n", str.toAscii().data());

为了方便使用,Qt提供了一个宏qPrintable(),这个宏等价于toAscii().constData(),例如:

printf("User: %s\n", qPrintable(str));

我们调用QByteArray类上面的data()或者constData()函数,将获得QByteArray 内部的一个const char*类型的字符串,

因此,我们不需要担心内存泄漏等的问题,Qt会替我们管理好内存。不过这也暗示我们,注意不要使用这个指针太长时间,

因为如果 QByteArray被delete,那么这个指针也就成为野指针了。如果这个QByteArray对象没有被放在一个变量中,

那么当语句结束后,QbyteArray对象就会被delete,这个指针也就被delete 了。

七、字符串与其它类型的转换函数。

toInt()     转整型

toDouble()  转双精度型

toLong()    转长整型

这些函数都接受一个bool指针作为参数,函数结束之后将根据是否转换成功设置为true或者false:

bool ok;

double d = str.toDouble(&ok);

if(ok)

{

// do something...

} else {

// do something...

}

整型转字符串型:

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

QString str = QString::number(54.3);

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

QString str;

str.setNum(54.3);

八、QString则提供了一个sprintf()函数实现了与C语言中的printf函数相同的功能。

1. str.sprintf("%s %.1f%%", "perfect competition", 100.0);

这句代码将输出:perfect competition 100.0%

2、另一种格式化字符串输出的函数arg():

str = QString("%1 %2 (%3s-%4s)").arg("permissive").arg("society").arg(1950).arg(1970);

{

QStringstr;str="%1 %2";str.arg("%1f","Hello");// returns "%1f Hello"str.arg("%1f").arg("Hello");// returns "Hellof %2"

}

这段代码中,%1, %2, %3, %4作为占位符,将被后面的arg()函数中的内容依次替换,比如%1将被替换成permissive,

%2将被替换成society,%3将被替换成 1950,%4将被替换曾1970,最后,

这句代码输出为:permissive society (1950s-1970s). arg()函数比起sprintf()来是类型安全的,

同时它也接受多种的数据类型作为参数,因此建议使用arg()函数而不是传统的 sprintf()。

九、求字符串的长度,返回值为INT型。

length();

十、如何正确显示中文字符

如果使QT根据Locale的环境变量取得字符集,可以使用如下命令:

QString::fromLocal8Bit("你好,世界!");

使用QString的fromLocal8Bit()函数; QString str; str = str.fromLocal8Bit("哈哈哈");

相关文章:

  • 怎么用yum安装mysql数据库_使用yum如何安装mysql数据库讲析
  • java完全面向对象吗_浅谈对Java为何是完全面向对象语言
  • java getbean不同实现_Spring Boot 2 实战:根据条件来自动配置不同逻辑的Bean
  • 孝感 java_孝感java工资一般多少,孝感java工资待遇,孝感java工资待遇到多少
  • java struct2拦截器_Java struts2 拦截器 interceptors
  • JAVA安卓4.4.4_Android源码4.4.4_r1下载和编译
  • java 设置listview单元格颜色_动态改变Listview的item背景颜色和item中字体的颜色
  • 最长递增子序列 java_动态规划深入6 最长递增子序列
  • yml mysql参数_yml配置--给参数设置默认值
  • ant java eclipse_(转)Eclipse中使用Ant
  • java json merge_JavaScript 如何合并两个Json对象
  • java setselectionend_Java Gallery.setSelection方法代码示例
  • stringbuffer java API_StringBuffer类
  • jasperreport java数据_ireport5.6.0+jasperreports 使用java对象做为数据源导出excel或者Pdf...
  • 与时间相关的java源码_JAVA的Date类与Calendar类
  • 网络传输文件的问题
  • 【译】理解JavaScript:new 关键字
  • 03Go 类型总结
  • Android Volley源码解析
  • Angular 4.x 动态创建组件
  • Cookie 在前端中的实践
  • Essential Studio for ASP.NET Web Forms 2017 v2,新增自定义树形网格工具栏
  • Java到底能干嘛?
  • NLPIR语义挖掘平台推动行业大数据应用服务
  • Python代码面试必读 - Data Structures and Algorithms in Python
  • React组件设计模式(一)
  • uva 10370 Above Average
  • 大主子表关联的性能优化方法
  • 电商搜索引擎的架构设计和性能优化
  • 力扣(LeetCode)22
  • 模仿 Go Sort 排序接口实现的自定义排序
  • 前端攻城师
  • 让你成为前端,后端或全栈开发程序员的进阶指南,一门学到老的技术
  • 少走弯路,给Java 1~5 年程序员的建议
  • 深入体验bash on windows,在windows上搭建原生的linux开发环境,酷!
  • 使用 QuickBI 搭建酷炫可视化分析
  • 原生js练习题---第五课
  • [地铁译]使用SSD缓存应用数据——Moneta项目: 低成本优化的下一代EVCache ...
  • 从如何停掉 Promise 链说起
  • 没有任何编程基础可以直接学习python语言吗?学会后能够做什么? ...
  • ​secrets --- 生成管理密码的安全随机数​
  • ​如何使用ArcGIS Pro制作渐变河流效果
  • ​软考-高级-信息系统项目管理师教程 第四版【第19章-配置与变更管理-思维导图】​
  • #我与Java虚拟机的故事#连载15:完整阅读的第一本技术书籍
  • (17)Hive ——MR任务的map与reduce个数由什么决定?
  • (HAL库版)freeRTOS移植STMF103
  • (JSP)EL——优化登录界面,获取对象,获取数据
  • (附源码)spring boot智能服药提醒app 毕业设计 102151
  • (六)Hibernate的二级缓存
  • (论文阅读26/100)Weakly-supervised learning with convolutional neural networks
  • (求助)用傲游上csdn博客时标签栏和网址栏一直显示袁萌 的头像
  • (原創) 未来三学期想要修的课 (日記)
  • (原創) 物件導向與老子思想 (OO)
  • **PHP分步表单提交思路(分页表单提交)
  • ... 是什么 ?... 有什么用处?