QString和QByteArray的区别

本质

QString是对QByteArray的再次封装

在这里插入图片描述

QString可以通过char*来构造,也可以通过QByteArray来构造

QByteArray就是char*
QString是编码后的char*

QString也是封装了字符串, 但是内部的编码为utf8, UTF-8属于Unicode字符集, 它固定使用多个字节(window为2字节, linux为3字节)来表示一个字符

QByteArray可以看做是c语言中 char*的升级版本。我们在使用这种类型的时候可通过这个类的构造函数申请一块动态内存,用于存储我们需要处理的字符串数据

格式转换

可以将QString转换为QByteArray
在这里插入图片描述

QString ->QByteArray ->char*

    qDebug()<<"char* to QString";
    char* c_str = "hello";
    QString string  = QString (QLatin1String(c_str));
    qDebug()<<string;
    qDebug()<<"QString to char* (two step)";
    QString string2("hello2");
    std::string a1 = string2.toLocal8Bit().data();
    std::string a2 = string2.toLatin1().data();
    std::string a3 = string2.toUtf8().data();
    std::cout<<a1<<std::endl;
    std::cout<<a2<<std::endl;
    std::cout<<a3<<std::endl;

在这里插入图片描述

QString字符串格式化打印

 QString aa = QString("大家好,我是(%1),我的工号是(%2),我宣布(%3)!!!").arg("王健林").arg(001).arg("取消加班");
 qDebug()<<aa;

在这里插入图片描述

长度

QString计算的是字符数目
QByteArray计算的是字节数(汉字3字节,英文1字节,数字1字节)

    QString a1 = "我a1";
    QByteArray a2 = "我a1";
    qDebug()<<a1.length()<<a2.length();

在这里插入图片描述

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值