QString类详解

一、简要介绍

在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)函数后:
在这里插入图片描述
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_45337964/article/details/111919180