QString隐式共享
- 隐式共享:隐式数据共享机制去最大化资源有效利用和最小化复制克隆操作。隐式共享类当作为函数参数传递的时候,不仅安全而且效率很高,因为传递的时候只是传递的数据的指针,数据本身只当自己被修改的时候才会去复制。简称写时复制。数据相同时,执行浅拷贝,仅复制指向数据块的指针,数据不同时则执行深拷贝。隐式共享技术可以大大降低对内存的开销及CPU资源的消耗,很大程度提高应用程序的运行效率。
- QString类保存了16位的Unicode值,Unicode把所有语言都统一到一套编码里,Unicode提供UTF-8、UTF-16、UTF-32编码方式。UTF-8以字节为单位对Unicode进行编码,对不同范围的字符使用不同长度的编码。对于0x00-0x7F之间的字符,UTF-8编码与ASCII编码完全相同。
QString s1 = s0;处设置断点后调试运行。
| 断点调试快捷键 | 功能 |
|---|---|
| F9 | 设置/取消断点 |
| F5 | 开始调试/调到下一个断点 |
| F10 | 单步 |
| F11 | 单步进入 |
| Shift + F11 | 单步跳出 |
| Ctrl + F10 | 调到指定行 |
| Shift + F5 | 结束断点调试 |
QString s0 = "Hello"; //数据块"Hello"引用计数为1
QString s1 = s0; //数据块"Hello"引用计数为2
QString s2 = s0; //数据块"Hello"引用计数为3
//数据块"Hi"引用计数为1, 数据块"Hello"引用计数变为2
s2 = "Hi";
QString s3 = s0; //数据块"Hello"引用计数为3
QString s4 = s2; //数据块"Hi"引用计数为2
QString s5 = s2; //数据块"Hi"引用计数为3
QString常用初始化 和 转换方式:
//常用初始化方式
QString str("张三");
QChar cHello[5] = {
'H','e','l','l','o'};
QString Hello(cHello, sizeof(cHello)/sizeof(cHello[0]));
qDebug() << str << Hello;
//QString 转换 int float double类型
QString strAge = "2022";
QString strPI = "3.14";
int age = strAge.toInt(); //转换int类型
float fPI = strPI.toFloat(); //转换float类型
double dPI = strPI.toDouble(); //转换double类型

这篇博客探讨了Qt库中的QString类如何实现隐式共享机制,通过讲解字符串的隐式共享,强调了在传递和复制过程中的高效性和安全性。此外,还介绍了QString的常用初始化方法和转换方式,以及其在Unicode编码下的特性,特别是与UTF-8的兼容性。
最低0.47元/天 解锁文章
1374

被折叠的 条评论
为什么被折叠?



