【问题标题】:What would be most efficient way to compare QString and char*比较 QString 和 char* 的最有效方法是什么
【发布时间】:2015-05-12 02:43:27
【问题描述】:

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

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

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

将分配一个QByteArray

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

怎么样

if(mystring == QLatin1String(mycharstar))

会更好吗?

【问题讨论】:

  • 本能地我会做mystring.toAscii() == mycharstar,但我没有分析过,所以不要听我的。
  • 为什么使用 char* 而不是 std::string ?
  • tux3 - Ascii 也将分配并进行转换。
  • 一切都取决于您要使用的编码。您可能必须制作自己的比较功能

标签: performance qt malloc qstring


【解决方案1】:

可能是if( mystring == QLatin1String(mycharstar) ),建议here

【讨论】:

    【解决方案2】:

    没有只使用强制转换的“高效”方式。这是因为QtString 在内部使用 16 位来编码单个字符,而 C 字符串仅使用 8 位。这意味着任何基于内存指针的比较几乎都会返回false

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-09-06
      • 1970-01-01
      • 1970-01-01
      • 2021-04-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多