比较QString和char *最有效的方法是什么?

时间:2015-03-10 15:19:00

标签: performance qt malloc qstring

比较QString和char *

的最有效方法是什么

if( mystring == mycharstar ) {}将执行malloc,

if(strcmp(mystring.toLocal8Bit().constData(),mycharstar ) == 0) {}

将分配QByteArray

我希望不会发生任何分配, 你们会推荐吗?

怎么样?

if(mystring == QLatin1String(mycharstar))

会更好吗?

2 个答案:

答案 0 :(得分:5)

没有"高效"只使用演员表的方式。这是因为QtString内部使用16位来编码单个字符,而C字符串仅使用8位。这意味着任何基于内存指针的比较几乎都会返回false

这就是为什么你必须将QtString的16位宽字符编码为与C字符串相同的编码,并始终至少需要调用malloc()

另请参阅:How to convert QString to std::string?

答案 1 :(得分:1)

可能是if( mystring == QLatin1String(mycharstar) ),如建议here