Класс QStaticByteArrayMatcher
Класс QStaticByteArrayMatcher — это версия класса QByteArrayMatcher, скомпилированная на этапе компиляции. Подробнее...
| Заголовок: | #include <QStaticByteArrayMatcher> |
| qmake: | QT += core |
| С версии: | Qt 5.9 |
Подробное описание
Класс QStaticByteArrayMatcher — это версия класса QByteArrayMatcher, скомпилированная на этапе компиляции.
Этот класс полезен, когда у вас есть последовательность байтов, которую вы хотите многократно сопоставлять с некоторыми массивами байтов (например, в цикле) или когда вы хотите найти одну и ту же последовательность байтов несколько раз в одном и том же массиве байтов. Использование объекта соответствия и метода indexIn() быстрее, чем сопоставление обычного объекта QByteArray с методом QByteArray::indexOf(), особенно если происходит многократное сопоставление.
В отличие от QByteArrayMatcher, этот класс вычисляет внутреннее представление на этапе компиляции, если ваш компилятор поддерживает уровень C++14 constexpr (C++11 недостаточно), поэтому он может быть полезен даже при одноразовых сопоставлениях массивов байтов.
Создайте QStaticByteArrayMatcher с помощью вызова qMakeStaticByteArrayMatcher(), передав ему строку-литерал C, которую вы хотите найти. Сохраните результат этой функции в static const auto переменной, чтобы вам не нужно было явно передавать N параметр шаблона:
static const auto matcher = qMakeStaticByteArrayMatcher("needle"); Затем вызовите indexIn() для QByteArray, в котором вы хотите выполнить поиск, точно так же, как с QByteArrayMatcher.
Поскольку этот класс разработан для выполнения всех предварительных вычислений на этапе компиляции, он не предлагает метод setPattern().
См. также QByteArrayMatcher и QStringMatcher.
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-5.9/qstaticbytearraymatcher.html