QStaticLatin1StringMatcher 类

template <Qt::CaseSensitivity CS, size_t N> class QStaticLatin1StringMatcher

QStaticLatin1StringMatcher 类是 QLatin1StringMatcher 的编译时版本。 更多...

头文件 #include <QStaticLatin1StringMatcher>
CMakefind_package(Qt6 REQUIRED COMPONENTS Core)
target_link_libraries(mytarget PRIVATE Qt6::Core)
qmakeQT += core
Qt 6.7

公共函数

qsizetypeindexIn(QLatin1StringView haystack, qsizetype from = 0) const
(自 6.7) autoqMakeStaticCaseInsensitiveLatin1StringMatcher(const char (&)[N] patternToMatch)
(自 6.7) autoqMakeStaticCaseSensitiveLatin1StringMatcher(const char (&)[N] patternToMatch)

详细描述

此类在您的代码需要高效地搜索已知编译时的 Latin-1 字符串中的子串时非常有用。这在解析器中很常见。使用匹配器对象的 indexIn() 比使用你要搜索的字符串的 indexOf() 成员方法更快,尤其是在要查找的字符串将在重复搜索或在大尺寸 Latin-1 字符串中重复多次,且该字符串可能有多个预期子串前缀匹配时。

QLatin1StringMatcher 不同,此类在 编译时 计算内部表示,因此即使您只是进行一次性 Latin-1 字符串匹配,它也可能有益。

通过调用 qMakeStaticCaseSensitiveLatin1StringMatcher() 或 qMakeStaticCaseInsensitiveLatin1StringMatcher(),并将要搜索的 Latin-1 字符串作为 C 字符串字面量传递来创建 QStaticLatin1StringMatcher。在 static constexpr auto 变量中存储该函数的返回值,这样您就无需明确传递 N 模板参数。

然后,像使用 QLatin1StringMatcher 一样,在您想要搜索的 QLatin1StringView 上调用 indexIn()。

由于此类旨在在编译时执行全部前置计算,因此它不提供 setPattern() 或 setCaseSensitivity() 方法。

注意:目前不支持 INTEGRITY 操作系统。

另请参阅:QLatin1StringMatcherQStaticByteArrayMatcherQByteArrayMatcher

成员函数文档

[constexpr noexcept] qsizetype QStaticLatin1StringMatcher::indexIn(QLatin1StringView haystack, qsizetype from = 0) const

从字节位置 from (默认 0,即第一个字节) 开始搜索 QLatin1StringView haystack 中设置的 QLatin1StringView 模式()。使用在构造函数中也设置的相同大小写敏感度。

返回模式()在 haystack 中匹配的位置,如果没有找到匹配项则返回 -1。

相关非成员

[constexpr noexcept, since 6.7] 模板 <auto qMakeStaticCaseInsensitiveLatin1StringMatcher(const char (&)[N] patternToMatch)

返回一个 QStaticLatin1StringMatcher,该匹配器的正确 NpatternToMatch 自动确定,并且不考虑大小写。

要充分利用此函数,请将结果分配给 static constexpr auto 变量

static constexpr auto matcher = qMakeStaticCaseInsensitiveLatin1StringViewMatcher("needle");

此函数首次在 Qt 6.7 中引入。

[constexpr noexcept, since 6.7] 模板 <auto qMakeStaticCaseSensitiveLatin1StringMatcher(const char (&)[N] patternToMatch)

返回一个 QStaticLatin1StringMatcher,该匹配器的正确 NpatternToMatch 自动确定,并且考虑大小写。

要充分利用此函数,请将结果分配给 static constexpr auto 变量

static constexpr auto matcher = qMakeStaticCaseSensitiveLatin1StringViewMatcher("needle");

此函数首次在 Qt 6.7 中引入。

© 2024 The Qt Company Ltd. 本文档中的贡献是各自所有者的版权。本文档是根据由自由软件基金会发布的 GNU 自由文档许可版 1.3 的条款授权的。Qt 及其相应标志是芬兰及/或其他国家/地区的 Qt 公司的商标。所有其他商标均为其各自所有者的财产。