Qt——容器

QString类利用隐式共享优化字符串操作,减少内存开销。文章介绍了QString的创建、转换、拼接和查询方法,并展示了QList、QLinkedList、QVector和QHash等容器类的使用,包括元素的添加、删除、访问和迭代。同时提到了QVariant类用于存储多种Qt类型数据的能力。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

QString类

隐式共享:

隐式数据共享机制去最大化资源有效利用和最小化复制克隆操作。

隐式数据共享类当作为函数参数传递的时候,不仅安全而且效率很高,因为传递的时候只是传递了数据的指针,数据本身只当自己被修改的时候才会去复制。简称写时复制。

数据相同时,执行浅拷贝,仅复制指向数据块的指针,数据不同时则执行深拷贝。

隐式共享技术可以大大降低对内存的开销以及,CPU资源的消耗,很大程度提高应用程序的运行效率。

QString类保存了16位的Unicode值(宽字节),Unicode把所有语言都统一到一套编码里,Unicode提供UTF-8、UTF-16、UTF-32编码方式。

UTF-8以字节为单位对Unicode进行编码,对不同范围的字体使用不同长度的编码。对于0x00-0x7F之间的字符,UTF-8编码与ASCII编码完全相同。

代码示例

QString s = "Hello";//Hello数据块引用计数为1
    QString s1 = s;//Hello数据块引用计数为2
    QString s2 = s;//Hello数据块引用计数为3
    //其中一个进行球盖
    s2 = "He";//不在引用Hello这个数据块,Hello数据块引用-1,He数据块引用计数为1
    QString s3 = s;//Hello数据块引用计数为3
    QString s4 = s2;//He数据块引用计数为2
    QString s5 = s2;//He数据块引用计数为2

初始化

//const char* 初始化
    QString s = "hello";
    QString str("test");
    //QChar数组初始化
    QChar cHi[3] = {'h','i'};
    QString strHi(cHi,2);Z
    //类对象初始化
    QString s1 = s;

转换

//QString转数字
    QString strAge("18");
    int nAge = strAge.toInt();//默认是10进制
    QString strRate("3.14");
    float nRate = strRate.toFloat();
    QString strDouble("3.333");
    double strD = strDouble.toDouble();
    //数字转QString
    int year = 2022;
    float height = 1.70f;
    QString strYear;
    strYear =  strYear.number(year);
    QString strHeight;
    strHeight = strHeight.number(height);
    QString strTest;
    strTest = strTest.setNum(year);
    //QString转QByteArray
    QString strTom = "Tom";
    QByteArray tomArray = strTom.toUtf8();
    const char* cTom = tomArray.data();
    //QString转QDataTime
    QString strTime = "1949-10-01 10:00:00";
    QDateTime dtTime = QDateTime::fromString(strTime,"yyyy-MM-dd hh:mm:ss");
    //QDateTime转QString
    QDateTime dtCurrent =
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值