Spec-Zone.ru › Qt 5.15

Класс QStaticByteArrayMatcher

шаблон <uint N> класс QStaticByteArrayMatcher

Класс QStaticByteArrayMatcher — это версия класса QByteArrayMatcher, вычисляемая во время компиляции. Подробнее...

Заголовок: #include <QStaticByteArrayMatcher>
qmake: QT += core
С момента: Qt 5.9

Этот класс был представлен в Qt 5.9.

  • Список всех членов, включая унаследованные

Открытые функции

int indexIn(const QByteArray &haystack, int from = 0) const
int indexIn(const char *haystack, int hlen, int from = 0) const
QByteArray pattern() const

Связанные нечлены

QStaticByteArrayMatcher<N> qMakeStaticByteArrayMatcher(const char (&)[N] pattern = N)

Подробное описание

Этот класс полезен, когда у вас есть последовательность байтов, которую вы хотите многократно сопоставлять с некоторыми массивами байтов (возможно, в цикле), или когда вы хотите искать ту же последовательность байтов несколько раз в одном и том же массиве байтов. Использование объекта-совпадения и indexIn() быстрее, чем сопоставление обычного QByteArray с помощью QByteArray::indexOf(), особенно если повторяющееся сопоставление происходит многократно.

В отличие от QByteArrayMatcher, этот класс вычисляет внутреннее представление во время компиляции, если ваш компилятор поддерживает C++14 (C++11 недостаточно), поэтому он может быть полезен даже при однократном сопоставлении массивов байтов.

Создайте QStaticByteArrayMatcher, вызвав qMakeStaticByteArrayMatcher(), передав ему строковый литерал C, который вы хотите найти. Сохраните возвращаемое значение этой функции в static const auto переменной, чтобы вам не нужно было явно передавать параметр шаблона N.

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

Затем вызовите indexIn() для QByteArray, в котором вы хотите выполнить поиск, точно так же, как и с QByteArrayMatcher.

Поскольку этот класс разработан для выполнения всех предварительных вычислений во время компиляции, он не предлагает метод setPattern().

Примечание: Qt определяет необходимую поддержку компилятора C++14 с помощью рекомендаций по тестированию функций из стандартного документа комитета C++ 6.

См. также QByteArrayMatcher и QStringMatcher.

Документация по членам-функциям

int QStaticByteArrayMatcher::indexIn(const QByteArray &haystack, int from = 0) const

Ищет в строке символов haystack, начиная с байтовой позиции from (по умолчанию 0, т. е. с первого байта), массив байтов pattern(), заданный в конструкторе.

Возвращает позицию, где pattern совпал в haystack, или -1, если совпадений не найдено.

int QStaticByteArrayMatcher::indexIn(const char *haystack, int hlen, int from = 0) const

Ищет в строке символов haystack, длина которой hlen, начиная с байтовой позиции from (по умолчанию 0, т. е. с первого байта), массив байтов pattern(), заданный в конструкторе.

Возвращает позицию, где pattern совпал в haystack, или -1, если совпадений не найдено.

QByteArray QStaticByteArrayMatcher::pattern() const

Возвращает массив байтов шаблон, который этот сопоставитель массивов байтов будет искать.

См. также QByteArrayMatcher::setPattern().

Связанные нечлены

шаблон <uint N> QStaticByteArrayMatcher<N> qMakeStaticByteArrayMatcher(const char (&)[N] pattern = N)

Возвращает QStaticByteArrayMatcher с правильным N, автоматически определенным из переданного pattern.

Чтобы в полной мере использовать эту функцию, присвойте результат auto переменной:

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

Эта функция была представлена в Qt 5.9.

© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-5.15/qstaticbytearraymatcher.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API