QString、QLatin1String、QStringLiteral
创始人
2025-05-28 06:56:00
0

QString

QString 提供了一个 Unicode 字符串,QString 存储的是一串 QChar,而 QChar 提供了 16位的 Unicode 字符,后台使用隐式共享减少内存的开销。

避免重载一个const char* 作为参数的通过方法
booloperator!=(QLatin1String other) const
booloperator!=(const char *other) const
booloperator!=(const QByteArray &other) const
重载运算可以直接操作原始 char *,不必为了我们的字符串常量去创建临时 QString 对象。

如果应用程序定义了 QT_NO_CAST_FROM_ASCII 宏
DEFINES += QT_NO_CAST_FROM_ASCII
则程序无法使用 const char*相关的 API 函数。

QLatin1String

为避免不必要的内存开销(构造 QString 对象时涉及的内存分配、拷贝数据及数据转换成 QString 的内部编码这些开销)QLatin1String 产生了,它是 const char*的一层薄薄的封装。
它将字符串传递给函数时,函数通过 QLatin1String 的重载避免转换为 QString 对象,这样做的效率显著提高。
一些接收 QLatin1String 为参数的重载函数能够直接对纯 latin1 数据进行处理,不必进行编码转换。
使用:
if(str == QLatin1String(“abc”))

QStringLiteral()

函数只接受 QString 参数的函数时,无论我们给一个字面字符串或 QLatin1String,都会隐式构造一个临时的 QString 对象,构造这个对象需要在栈上申请一定的内存空间,然后把字符串拷贝过去,如果这样的调用比较多,那还是一笔不小的开销。此时,我们可以使用 QStringLiteral 来减少这个开销。
QStringLiteral()其实是一个宏,从字符串常量创建 QString 对象的宏。

宏在编译时,从字符串文字生成 QString 数据,QString 的内部数据将在编译时生成,在运行时不会发生任何转换或内存分配,使用 QStringLiteral 来代替 C++中的双重数值传递将会在编译的时候显著的提升时间。

优点:使用 QStringLiteral 而不是双引号的普通 C++的字符串可显著加快从编译时已知的数据创建 QString 实例的速度,相对来说有 QLatin1String 参数重载的比使用 QStringLiteral更高效。

总结

①参数能使用 const char*类型或 QLatin1String 类型的地方使用相应的参数。
②参数需要 QString 参数类型的地方,若值不修改,则使用 QStringLiteral 宏
③参数需要 QString 类型且 QString 可能被修改,则直接使用 QString 或隐式转换。

相关内容

热门资讯

海信电视有带安卓系统 亲爱的读者们,你是否在寻找一款既时尚又实用的电视呢?今天,我要给你介绍一款特别受欢迎的产品——海信电...
优学派安卓系统不能下载,优学派... 最近发现了一个让人头疼的小问题,那就是优学派安卓系统竟然不能下载应用了!这可真是让人摸不着头脑,毕竟...
安卓系统下载大疆软件,开启航拍... 你有没有想过,无人机飞行器已经不再是那些高科技电影里的专属了?现在,连咱们普通人也能轻松驾驭这些空中...
安卓系统的隐藏相册在哪,隐藏相... 你有没有发现,手机里的安卓系统有时候藏着一些小秘密呢?比如,那个神秘的隐藏相册,它就像一个隐藏的宝藏...
安卓手机分几个软件系统,多元生... 你有没有想过,你的安卓手机里竟然藏着那么多的秘密?没错,就是那些软件系统!今天,就让我带你一探究竟,...
安卓系统鼠标没反应,排查与解决... 亲爱的安卓用户们,你是否曾遇到过这样的烦恼:鼠标在电脑上动来动去,却怎么也控制不了安卓系统的界面?别...
摄像头支持安卓系统,开启智能生... 你有没有发现,现在的生活越来越离不开摄像头了?从家庭监控到手机拍照,从行车记录到无人机航拍,摄像头已...
安卓系统怎么查手机定位,安卓系... 你是不是也和我一样,有时候会突然好奇,想知道自己的手机在哪个角落里“闲逛”呢?别急,今天就来教你怎么...
学生登录系统和安卓手机 你有没有发现,现在的生活越来越离不开手机了?尤其是对于我们这些学生来说,手机简直就是我们的“小助手”...
安卓私密空间双系统,隐私无忧 你有没有想过,手机里的秘密,就像藏宝图一样,需要小心翼翼地守护呢?现在,我就要给你揭秘一个神奇的功能...
5.1系统安卓模拟器,功能解析... 你有没有想过,在电脑上也能玩安卓游戏呢?没错,这就是5.1系统安卓模拟器的神奇魅力。今天,就让我带你...
安卓哪种系统最好,安卓系统中的... 你有没有想过,手机里的安卓系统就像是个大超市,琳琅满目的商品让人挑花了眼?今天,咱们就来聊聊这个话题...
安卓系统app有hd版,极致视... 你有没有发现,手机上的安卓系统APP里,有些特别的地方呢?比如,有些APP竟然有HD版!这可不是普通...
安卓系统使用中突然死机 手机突然死机了,是不是你也遇到过这种情况?是不是瞬间感觉心情down到了谷底?别急,今天就来聊聊这个...
王者安卓系统能登苹果,王者体验... 你知道吗?最近在游戏圈里可是掀起了一股热潮呢!那就是——王者安卓系统能登苹果!是不是听起来有点不可思...
谷歌安卓系统怎么设置 你有没有发现,手机里的安卓系统就像一个神奇的魔法盒,里面藏着无数的小秘密等你去探索呢?今天,就让我带...
安卓系统热点在哪里,安卓系统热... 你是不是也和我一样,有时候手机里突然冒出一个“热点”功能,却不知道怎么用呢?别急,今天就来手把手教你...
天猫魔盒 系统 安卓 你有没有发现,家里的智能电视突然变得聪明多了?没错,这就是天猫魔盒的魔力所在!今天,就让我带你深入了...
安卓机包括什么系统,从底层架构... 你有没有想过,你的安卓手机里到底装了些什么系统呢?这可不是简单的“安卓系统”那么简单哦!今天,就让我...
福特的安卓系统怎么设置,福特汽... 你那福特车里的安卓系统是不是让你有点头疼?别急,今天就来手把手教你如何设置它,让你的福特车变得更加智...