一、QString类
QString类功能和标准C++中的string类类似,是用来对字符串进行操作的。QString类保存16位Unicode值,一个汉字算一个字符。
1.1 赋值
QString类字符串赋值方法和string类一样,直接赋值就可。
QString str = "Welcome!";
1.2 常用函数
1.2.1 拼接字符串
函数 | 功能 |
---|---|
append() | 在字符串后添加字符串 |
preappend() | 在字符串前添加字符串 |
- append()
QString str1 = "Qt";
str1.append("无敌");// str1的值为“Qt无敌”
- preappend()
QString str1 = "Qt";
str1.preappend("无敌");// str1的值为“无敌Qt”
1.2.2 查找字符串
函数 | 功能 |
---|---|
indexOf() | 在字符串中查找某个字符串 |
lastIndexOf() | 在字符串中查找某个字符串 |
contains() | 判断字符串中是否包含某个字符串 |
1.2.3 判断字符串是否为空
函数 | 功能 |
---|---|
isNull() | 字符串未赋值返回true,赋值了返回false |
isEmpty() | 字符串未赋值或赋空值返回ture |
1.2.4 去掉字符串中空格
函数 | 功能 |
---|---|
trimmed() | 去掉字符串首尾空格 |
simplified | 不仅去掉字符串首尾空格,还将字符串中间的空格用一个空格代替 |
1.2.5 字符串个数
函数 | 功能 |
---|---|
count() | 返回字符串中字符个数,空格也计算在内(一个汉字算一个字符) |
size() | 返回字符串中字符个数,空格也计算在内(一个汉字算一个字符) |
length() | 返回字符串中字符个数,空格也计算在内(一个汉字算一个字符) |
1.2.6 大小写
函数 | 功能 |
---|---|
toUpper() | 将全部字符串转化为大写 |
toLower() | 将全部字符串转化为小写 |
1.2.7 取字符串
函数 | 功能 |
---|---|
left() | 从左边开始取 |
right() | 从右边开始取 |
1.3 隐式共享
QString在处理共享对象时,使用深拷贝和浅拷贝这两种方法复制对象。浅拷贝是一个引用复制(如仅复制指向共享数据的指针);深拷贝是生成对象的一个完整的复制品。当两个对象共享同一份数据时(通过浅拷贝实现数据块的共享),如果数据不改变,则不进行数据的复制。而当某个对象需要改变数据时,则执行深拷贝。
如下,str2 = str1将该QString对象str1赋值给另一个QString对象str2时执行的是浅拷贝,也就是让这两个QString对象指向同一个存储空间而并没有在单独为str2另开一个存储空间。而str2[3] = ’n‘对正在共享同一份数据的str2对象修改了数据,此时为了不改变str1的值,系统进行了一次深拷贝,也就是为str2单独开辟了一个存储空间用来存储str2的值。
QString str1 = "csdn";
QString str2 = str1;
str2[2] = 'n';
隐式共享可以降低对内存和CPU资源的使用率,提高程序的运行效率。它使得在函数(如参数、返回值)使用值传递更有效率。
Qt支持隐式共享的类,还包括:
- 所有的容器类;
- QByteArray、QBrush、QPen、QPalette、QBitmap、QImage、QPixmap、QCursor、QDir、QFont和QVariant等。
该博客会持续更新,建议收藏!
如果该博客中有任何问题,还请大家在下方评论区指出!