QStaticByteArrayMatcher 类

template <size_t N> class QStaticByteArrayMatcher

QStaticByteArrayMatcher 类是 QByteArrayMatcher 的编译时版本。 更多...

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

公有函数

qsizetypeindexIn(const QByteArray &haystack, qsizetype from = 0) const
qsizetypeindexIn(const char *haystack, qsizetype hlen, qsizetype from = 0) const
QByteArraypattern() const
QStaticByteArrayMatcher<N>qMakeStaticByteArrayMatcher(const char (&)[N] pattern)

详细描述

当你有一系列字节序列需要与一些字节数组频繁匹配(可能在循环中),或者需要在同一个字节数组中多次查找相同的字节序列时,此类非常有用。使用匹配器和 indexIn() 比使用 QByteArrayQByteArray::indexOf() 来匹配简单的 QByteArray 更快,尤其是在重复匹配时。

QByteArrayMatcher 不同,这个类在编译时计算内部表示,因此即使你在进行一次性的字节数组匹配,也能从中受益。

通过调用 qMakeStaticByteArrayMatcher() 并传递你想搜索的 C 字符串字面量来创建 QStaticByteArrayMatcher。将这个函数的返回值存储在一个 static const auto 变量中,这样你就不需要显式传递 N 模板参数

static const auto matcher = qMakeStaticByteArrayMatcher("needle");

然后像对 QByteArrayMatcher 一样,在你想搜索的 QByteArray 上调用 indexIn()。

由于此类旨在在编译时执行所有预先计算,它不提供 setPattern() 方法。

另请参阅QByteArrayMatcherQStringMatcher

成员函数文档

[noexcept] qsizetype QStaticByteArrayMatcher::indexIn(const QByteArray &haystack, qsizetype from = 0) const

搜索从字节位置 from(默认为0,即第一个字节)开始的字符串 haystack,该字符串位于构造函数中设置的字节数组 pattern()。

返回在 haystackpattern() 匹配的位置,或如果没有找到匹配项则返回-1。

[noexcept] qsizetype QStaticByteArrayMatcher::indexIn(const char *haystack, qsizetype hlen, qsizetype from = 0) const

搜索长度为 hlen 的字符串 haystack,从字节位置 from(默认0,即第一个字节)开始,寻找构造函数中设置的字节数组 pattern()。

返回在 haystackpattern() 匹配的位置,或如果没有找到匹配项则返回-1。

QByteArray QStaticByteArrayMatcher::pattern() const

返回此字节数组匹配器将要搜索的字节序列模式。

另请参阅QByteArrayMatcher::setPattern

相关非成员

[constexpr noexcept] 模板 <size_t N> QStaticByteArrayMatcher<N> qMakeStaticByteArrayMatcher(const char (&)[N] pattern)

返回一个具有正确 N(从传递的 pattern 自动确定)的 QStaticByteArrayMatcher

要充分利用此功能,请将结果分配给一个 auto 变量

static const auto matcher = qMakeStaticByteArrayMatcher("needle");

© 2024 The Qt Company Ltd. 本文档中包含的贡献版权属于其各自的业主。此处提供的文档根据自由软件基金会发布的 GNU自由文档许可证1.3版本 的条款进行许可。Qt及其相应标志是The Qt Company Ltd.在芬兰和其他国家和地区的商标。所有其他商标均为其各自业主的财产。