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))
会更好吗?
没有"高效"的方式只使用演员阵容.这是因为QtString内部使用16位来编码单个字符,而C字符串仅使用8位.这意味着任何基于内存指针的比较几乎总是会返回false.
这就是为什么你必须将16位宽的字符QtString编码为与C字符串相同的编码,并且始终需要至少一次调用malloc().
另请参见:如何将QString转换为std :: string?