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

标签 performance qt malloc qstring

比较 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() .

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

关于performance - 比较 QString 和 char* 的最有效方法是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28967490/

相关文章:

multithreading - 哪个更高效?更多内核或更多 CPU

qt - Qt 上基于临时的聊天应用程序(无需路由器)

c++ - Qt 控制台应用程序的标准配置方法是什么?

c++ - 在类中访问 malloc'd 二维数组时出现段错误

c - 关于C动态内存分配的练习

java - C++中new运算符和java中new运算符的区别

Azure Blob 存储流性能问题

performance - TLB 未命中与缓存未命中?

javascript - google lighthouse 如何计算 javascript 评估时间,以及为什么对于不同环境中的相同脚本,它会有很大差异

c++ - QList<float*> 类型的 NULL 返回值