比较 QString 和 char* 的最有效方法是什么
if( mystring == mycharstar ) {}
将执行 malloc,
和
if(strcmp(mystring.toLocal8Bit().constData(),mycharstar ) == 0) {}
会分配一个QByteArray
我不想进行任何分配, 你们会推荐吗?
关于
if(mystring == QLatin1String(mycharstar))
会更好吗?
最佳答案
没有仅使用强制转换的“有效”方法。这是因为 QtString
在内部使用 16 位来编码单个字符,而 C 字符串仅使用 8 位。这意味着任何基于内存指针的比较几乎总是返回 false
。
这就是为什么你必须将 QtString
的 16 位宽字符编码为与你的 C 字符串相同的编码,并且总是需要至少调用一次 malloc()
.
关于performance - 比较 QString 和 char* 的最有效方法是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28967490/