Qt之 QStringLiteral

介绍

QStringLiteral是一个宏,他可以把编译期间代码中的字符串string直接构造为QString类型的对象,通过这个方法可以在与西宁过程中节约一定的构造上的开销。它更大的作用在于他可以它编译时的字符串直接转为统一的编码格式utf-8格式。在编译过程中,如果编码格式的不同可能会导致中文字符串出现乱码的情况,QStringLiteral他的效果和QString::fromUtf8()的效果一样(vs中也可以通过QStringLiteral把多字节文本转换成utf-8文本,但是在qt中不存在编码问题,默认是utf-8的)。

在编译器支持的情况下,这个宏将string类型生成为QString类型的数据,在这种情况下,它所创建的QString类型是自由的,它所生成的字符串数据是存储在编译的目标文件中的只读段中,由此可知他是不可以改变的。然而在一般的使用过程中他是QStringLiteral("这样使用") 是这样使用的。一般情况下不会进行修改。

QString,和Qt中的其他类一样,它唯一的数据成员就是一个指向其“私有”数据的指针。 QStringData由是通过 malloc的方式分配空间,并且在后面继续分配了足够的空间来存放实际的字符数据。

禁用:

QStringLiteral 不可以用于对QString类型的列表或者数组进行初始化。

QString no[] = { QStringLiteral("n"), QStringLiteral("o") };//错误使用方法

代替方法:

在有一些情况下 QLatin1String 是比 QStringLiteral 更有效的:如果它被传递给一个有直接接受 QLatin1String 而不转换成 QString 类型参数的重载的函数时。 例如,QString::operator == 就是这种情况

QLatin1String类对US-ASCII/Latin-1编码的字符串进行了简单封装,可理解为关于const char*的一个浅封装。如果在pro文件中定义了QT_NO_CAST_FROM_ASCII,再使用QString 进行普通的赋值时就会出现报错。但是在赋值前使用QLatin1String会解决这个问题。

本文福利, 免费领取Qt开发学习资料包、技术视频,内容包括(C++语言基础,Qt编程入门,QT信号与槽机制,QT图像绘制,QT网络,QT数据库编程,QT项目实战,QT嵌入式开发,Quick模块等等)↓↓↓↓↓↓见下面↓↓文章底部点击免费领取↓↓

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值