比较QString和char *
的最有效方法是什么 if( mystring == mycharstar ) {}
将执行malloc,
和
if(strcmp(mystring.toLocal8Bit().constData(),mycharstar ) == 0) {}
将分配QByteArray
我希望不会发生任何分配, 你们会推荐吗?
怎么样?
if(mystring == QLatin1String(mycharstar))
会更好吗?
答案 0 :(得分:5)
没有"高效"只使用演员表的方式。这是因为QtString
内部使用16位来编码单个字符,而C字符串仅使用8位。这意味着任何基于内存指针的比较几乎都会返回false
。
这就是为什么你必须将QtString
的16位宽字符编码为与C字符串相同的编码,并始终至少需要调用malloc()
。
答案 1 :(得分:1)
可能是if( mystring == QLatin1String(mycharstar) )
,如建议here。