一、简要介绍
在Qt中表示字符串的类是QString类,它存储字符串是采用的Unicode码,编码方式是使用UTF-16来进行编码的,也就是一个字符(两个字节
),一个中文汉字一般情况下是两个字节。
1.1 隐式共享
QString类采用了隐式共享的机制,那什么是隐式共享呢?
隐式共享
:就是最大化资源的有效利用和最小化复制克隆操作。它是一种对象的管理方法(由隐式共享类所创建的对象),当对象作为函数参数传递的时候,不仅安全而且效率很高,因为传递的时候只是传递的该对象的指针,数据本身只当自己被修改的时候才会去复制。简称写时复制
。数据相同时,执行浅拷贝,仅复制指向数据块(包括引用计数器和真实数据)的指针,数据不同时则执行深拷贝。隐式共享技术可以大大降低对内存的开销及CPU资源的消耗,很大程度提高应用程序的运行效率。
它的实现手段是引用计数,当数据相同时,只改变计数器的值(浅拷贝),当不同时才会进行分配资源进行(深拷贝)。
如下代码:
QString s1 = "Hello"; //数据块 “Hello” 计数器为1
QString s2 = s1; //数据块 “Hello” 计数器为2
QString s1 = "Hello"; //数据块 “Hello” 计数器为1
QString s2 = s1; //数据块 “Hello” 计数器为2
QString s2 = "Hi"; //数据块 “Hi” 计数器为 1,数据块“Hello” 计数器为1
二、常用方法
2.1 常用构造函数
QString s1 = “Hello”;
QString s2(“world”);
QString s3 = s1;
//使用数组, QChar的大小是两个字节
QChar arr[] = {‘L’, ‘o’, ‘v’, ‘e’};
QString s4(arr, 4);
每个对象打印出来的结果如下:
2.2 字符串与数值之间的转换
2.3 添加字符串
也可以使用’+'号拼接字符串。
2.4 大小写转换
2.5 长度
2.6 其他常用函数
判断空字符串的区别:
若字符串为"123,aaa,999,ppp",当调用s,section(",", 0, 3)函数后: