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

xch*_*.ca 3 malloc performance qstring qt

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

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

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

会分配一个 QByteArray

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

关于什么

if(mystring == QLatin1String(mycharstar))

会更好吗?

Aar*_*lla 5

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

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

另请参见:如何将QString转换为std :: string?