如何在QLatin1String中搜索子字符串

How to search substring in QLatin1String?

本文关键字:搜索 字符串 QLatin1String      更新时间:2023-10-16

QLatin1String 类没有任何用于在其中搜索子字符串的操作(例如indexOffindcontains(的原因是什么?只有startsWithendsWith我被发现,但他们无法在字符串中间搜索

至于为什么,你必须用Qt来解决这个问题。

一般来说,QLatin1String用于表示我们过去所说的ASCII文本(没有Unicode(。 QString是Qt中默认的全能字符串,你通常应该使用它,或者你可以将其转换为std::string并使用它。其中任何一个都可能以副本为代价。

如果你想避免复制,QLatin1String确实有begin()end()函数,所以你也可以在上面使用标准算法,比如C++17的新std::search()

auto s = QLatin1String("The lazy dog");
auto needle = QLatin1String("azy");
auto it = std::search( std::begin(s), std::end(s), 
    std::boyer_moore_horspool_searcher( std::begin(needle), std::end(needle) ) );

这是一个使用 std::string s 的工作示例,也适用于 Koliru 上的 QLatin1String s。

在Bartek的编码博客上查看更多信息。