如何在 QLatin1String 中搜索子字符串?

How to search substring in QLatin1String?

为什么QLatin1String class里面没有任何搜索子串的操作,比如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::strings 的工作示例,它也适用于 Coliru.

上的 QLatin1Strings

更多信息见Bartek's coding blog