QStaticByteArrayMatcher 类
template <size_t N> class QStaticByteArrayMatcherQStaticByteArrayMatcher 类是 QByteArrayMatcher 的编译时版本。 更多...
头文件 | #include <QStaticByteArrayMatcher> |
CMake | find_package(Qt6 REQUIRED COMPONENTS Core) target_link_libraries(mytarget PRIVATE Qt6::Core) |
qmake | QT += core |
- 所有成员列表,包括继承的成员
- QStaticByteArrayMatcher 是 字符串数据处理类 的一部分。
公有函数
qsizetype | indexIn(const QByteArray &haystack, qsizetype from = 0) const |
qsizetype | indexIn(const char *haystack, qsizetype hlen, qsizetype from = 0) const |
QByteArray | pattern() const |
相关的非成员
QStaticByteArrayMatcher<N> | qMakeStaticByteArrayMatcher(const char (&)[N] pattern) |
详细描述
当你有一系列字节序列需要与一些字节数组频繁匹配(可能在循环中),或者需要在同一个字节数组中多次查找相同的字节序列时,此类非常有用。使用匹配器和 indexIn() 比使用 QByteArray 的 QByteArray::indexOf() 来匹配简单的 QByteArray 更快,尤其是在重复匹配时。
与 QByteArrayMatcher 不同,这个类在编译时计算内部表示,因此即使你在进行一次性的字节数组匹配,也能从中受益。
通过调用 qMakeStaticByteArrayMatcher() 并传递你想搜索的 C 字符串字面量来创建 QStaticByteArrayMatcher。将这个函数的返回值存储在一个 static const auto
变量中,这样你就不需要显式传递 N
模板参数
static const auto matcher = qMakeStaticByteArrayMatcher("needle");
然后像对 QByteArrayMatcher 一样,在你想搜索的 QByteArray 上调用 indexIn()。
由于此类旨在在编译时执行所有预先计算,它不提供 setPattern() 方法。
另请参阅QByteArrayMatcher 和 QStringMatcher。
成员函数文档
[noexcept]
qsizetype QStaticByteArrayMatcher::indexIn(const QByteArray &haystack, qsizetype from = 0) const
搜索从字节位置 from(默认为0,即第一个字节)开始的字符串 haystack,该字符串位于构造函数中设置的字节数组 pattern()。
返回在 haystack 中 pattern() 匹配的位置,或如果没有找到匹配项则返回-1。
[noexcept]
qsizetype QStaticByteArrayMatcher::indexIn(const char *haystack, qsizetype hlen, qsizetype from = 0) const
搜索长度为 hlen 的字符串 haystack,从字节位置 from(默认0,即第一个字节)开始,寻找构造函数中设置的字节数组 pattern()。
返回在 haystack 中 pattern() 匹配的位置,或如果没有找到匹配项则返回-1。
QByteArray QStaticByteArrayMatcher::pattern() const
返回此字节数组匹配器将要搜索的字节序列模式。
相关非成员
[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.在芬兰和其他国家和地区的商标。所有其他商标均为其各自业主的财产。