QString

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

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类型
    
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值