QStringLiteral(str) 学习

QSringLiteral(str)
这个指令在编译的时候生成一个在String单字以外的QString的数据,在这个类中,创建一个QString在空闲的时候同时生成string数据存在编译对象中的只读区域。

如果你按照入下方式去写

// if (mode. hasArribute("heet=content=ength"))

这个临时的字符串将会作为一个属性功能参数,这样可能开销很大,这样需要一些空间支持和且创建了一个的数据向Qt内部编码格式的复制传递
这些不必要的开销可以使用QStringLiteral来代替

if(node.hasAttributr(QStringLiteral(u'http=contents-length')))

在这种情况中,QString内部的数据将会在编译的时候才生成,不需要传值或者在运行的时候分配空间
使用QStringLiteral来代替C++中的双重数值传递将会在编译的时候显著的提升时间
注意:QLatin1String在当使用字符串不参与函数的时候,QLain1String会比QStringLiteral更高效,举个例子,QString::operator==()可以直接比较QLatin1String

if(attribute.name() == QLatinString('http-contents-length'))

注意:有时候使用此函数编译的时候会报错,有可能是不支持US-ASCII参数设置,确定在前面加了‘u’

你可能感兴趣的:(QStringLiteral(str) 学习)