Класс QByteArrayView
Класс QByteArrayView предоставляет представление на массив байтов с только для чтения подмножеством API QByteArray. Подробнее...
| Заголовок: | #include <QByteArrayView> |
| CMake: | find_package(Qt6 COMPONENTS Core REQUIRED) target_link_libraries(mytarget PRIVATE Qt6::Core) |
| qmake: | QT += core |
| С момента: | Qt 6.0 |
Примечание: Все функции в этом классе являются реентерабельными.
Открытые типы
| const_iterator | |
| const_pointer | |
| const_reference | |
| const_reverse_iterator | |
| difference_type | |
| iterator | |
| pointer | |
| reference | |
| reverse_iterator | |
| size_type | |
| storage_type | |
| value_type |
Открытые функции
| QByteArrayView(const char (&)[Size] data = Size) | |
| QByteArrayView(const Container &c) | |
| QByteArrayView(const QByteArray &byteArray) | |
| QByteArrayView(const Byte *data) | |
| QByteArrayView(const Byte *first, const Byte *last) | |
| QByteArrayView(const Byte *data, qsizetype len) | |
| QByteArrayView(std::nullptr_t) | |
| QByteArrayView() | |
| char | at(qsizetype n) const |
| char | back() const |
| QByteArrayView::const_iterator | begin() const |
| QByteArrayView::const_iterator | cbegin() const |
| QByteArrayView::const_iterator | cend() const |
| void | chop(qsizetype length) |
| QByteArrayView | chopped(qsizetype length) const |
| int | compare(QByteArrayView bv, Qt::CaseSensitivity cs = Qt::CaseSensitive) const |
| QByteArrayView::const_pointer | constData() const |
| bool | contains(QByteArrayView bv) const |
| bool | contains(char ch) const |
| qsizetype | count(QByteArrayView bv) const |
| qsizetype | count(char ch) const |
| QByteArrayView::const_reverse_iterator | crbegin() const |
| QByteArrayView::const_reverse_iterator | crend() const |
| QByteArrayView::const_pointer | data() const |
| bool | empty() const |
| QByteArrayView::const_iterator | end() const |
| bool | endsWith(QByteArrayView bv) const |
| bool | endsWith(char ch) const |
| QByteArrayView | first(qsizetype n) const |
| char | front() const |
| qsizetype | indexOf(QByteArrayView bv, qsizetype from = 0) const |
| qsizetype | indexOf(char ch, qsizetype from = 0) const |
| bool | isEmpty() const |
| bool | isNull() const |
| QByteArrayView | last(qsizetype n) const |
| qsizetype | lastIndexOf(QByteArrayView bv, qsizetype from) const |
| qsizetype | lastIndexOf(QByteArrayView bv) const |
| qsizetype | lastIndexOf(char ch, qsizetype from = -1) const |
| qsizetype | length() const |
| QByteArrayView::const_reverse_iterator | rbegin() const |
| QByteArrayView::const_reverse_iterator | rend() const |
| qsizetype | size() const |
| QByteArrayView | sliced(qsizetype pos) const |
| QByteArrayView | sliced(qsizetype pos, qsizetype n) const |
| bool | startsWith(QByteArrayView bv) const |
| bool | startsWith(char ch) const |
| QByteArray | toByteArray() const |
| void | truncate(qsizetype length) |
| char | operator[](qsizetype n) const |
Статические публичные члены
| QByteArrayView | fromArray(const Byte (&)[Size] data = Size) |
Связанные нечлены
| bool | operator!=(QByteArrayView lhs, QByteArrayView rhs) |
| bool | operator<(QByteArrayView lhs, QByteArrayView rhs) |
| bool | operator<=(QByteArrayView lhs, QByteArrayView rhs) |
| bool | operator==(QByteArrayView lhs, QByteArrayView rhs) |
| bool | operator>(QByteArrayView lhs, QByteArrayView rhs) |
| bool | operator>=(QByteArrayView lhs, QByteArrayView rhs) |
Подробное описание
QByteArrayView ссылается на непрерывный фрагмент сырых байтов, который она не владеет. Она работает как тип интерфейса для всех видов данных, похожих на массив байтов, без необходимости предварительного создания QByteArray.
Данные массива байтов могут быть представлены в виде массива (или совместимой со структурой данных, такой как QByteArray, std::basic_string и т.д.) char, signed char, unsigned char или std::byte.
QByteArrayView спроектирован как тип интерфейса; его основное применение — в качестве типа параметра функции. При использовании QByteArrayView в качестве автоматических переменных или членов данных необходимо следить за тем, чтобы данные, на которые ссылается QByteArrayView (например, принадлежащие QByteArray), существовали дольше, чем QByteArrayView, на всех путях кода, чтобы избежать ситуации, когда представление байтового массива ссылается на удалённые данные.
При использовании в качестве типа интерфейса QByteArrayView позволяет одной функции принимать широкий спектр источников данных, подобных байтовым массивам. Одна функция, принимающая QByteArrayView, таким образом, заменяет несколько перегрузок функций (принимающих, например, QByteArray, const char *, и т.д.), одновременно позволяя передавать в функцию ещё больше источников данных байтовых массивов.
QByteArrayView следует передавать по значению, а не по ссылке на константу:
void myfun1(QByteArrayView bv); // preferred
void myfun2(const QByteArrayView &bv); // compiles and works, but slower Если вы хотите предоставить своим пользователям максимальную свободу в выборе типа данных, которые они могут передавать вашей функции, дополните перегрузку QByteArrayView перегрузками для
-
char: эта перегрузка может делегировать вызов версии QByteArrayView:
void fun(QByteArrayView bv); void fun(char ch) { fun(QByteArrayView(&ch, 1)); }хотя по техническим причинам QByteArrayView не может предоставить конструктор char самостоятельно.
- QByteArray: если вы храните неизменную копию байтового массива и хотите воспользоваться неявным совместным использованием QByteArray.
QByteArrayView также может использоваться в качестве возвращаемого значения функции. Если вы вызываете функцию, возвращающую QByteArrayView, будьте внимательны, чтобы QByteArrayView не сохранялся дольше, чем функция гарантирует сохранение в живых ссылаемых данных. Если есть сомнения, получите сильную ссылку на данные, вызвав toByteArray() для преобразования QByteArrayView в QByteArray.
Совместимые типы байтов
QByteArrayView может быть сконструирован на любом контейнере байтов, где тип байта — один из:
-
char(как со знаком, так и без знака) std::byte
См. также QByteArray и QStringView.
Документация по типам членов
QByteArrayView::const_iterator
Этот typedef предоставляет итератор типа STL для QByteArrayView.
См. также iterator и const_reverse_iterator.
QByteArrayView::const_pointer
Псевдоним для value_type *. Предоставлен для совместимости со STL.
QByteArrayView::const_reference
Псевдоним для value_type &. Предоставлен для совместимости со STL.
QByteArrayView::const_reverse_iterator
Этот typedef предоставляет обратный итератор типа STL для QByteArrayView.
См. также reverse_iterator и const_iterator.
QByteArrayView::difference_type
Псевдоним для std::ptrdiff_t. Предоставлен для совместимости со STL.
QByteArrayView::iterator
Этот typedef предоставляет итератор типа STL для QByteArrayView.
QByteArrayView не поддерживает изменяемые итераторы, поэтому он эквивалентен const_iterator.
См. также const_iterator и reverse_iterator.
QByteArrayView::pointer
Псевдоним для value_type *. Предоставлен для совместимости со STL.
QByteArrayView не поддерживает изменяемые указатели, поэтому он эквивалентен const_pointer.
QByteArrayView::reference
Псевдоним для value_type &. Предоставлен для совместимости со STL.
QByteArrayView не поддерживает изменяемые ссылки, поэтому он эквивалентен const_reference.
QByteArrayView::reverse_iterator
Этот typedef предоставляет обратный итератор типа STL для QByteArrayView.
QByteArrayView не поддерживает изменяемые обратные итераторы, поэтому он эквивалентен const_reverse_iterator.
См. также const_reverse_iterator и iterator.
QByteArrayView::size_type
Псевдоним для qsizetype. Предоставлен для совместимости со STL.
QByteArrayView::storage_type
Псевдоним для char.
QByteArrayView::value_type
Псевдоним для const char. Предоставлен для совместимости со STL.
Документация по функциям-членам
qsizetype QByteArrayView::lastIndexOf(QByteArrayView bv, qsizetype from) const
qsizetype QByteArrayView::lastIndexOf(char ch, qsizetype from = -1) const
Возвращает индекс начала последнего вхождения последовательности байтов, рассматриваемой как bv, или последнего вхождения байта ch соответственно в этом представлении байтового массива, выполняя поиск назад с индекса from. Если from равно -1, поиск начинается с последнего символа; если from равно -2, с предпоследнего символа и так далее. Возвращает -1, если совпадение не найдено.
Примечание: При поиске последовательности длиной 0 (bv), совпадение в конце данных исключается из поиска с помощью отрицательного from, хотя -1 обычно рассматривается как поиск с конца представления: совпадение в конце находится после последнего символа, поэтому оно исключается. Чтобы включить такое конечное пустое совпадение, либо задайте положительное значение для from, либо полностью опустите параметр from.
См. также indexOf() и contains().
bool QByteArrayView::contains(QByteArrayView bv) const
bool QByteArrayView::contains(char ch) const
Возвращает true , если это представление байтового массива содержит вхождение последовательности байтов, рассматриваемой как bv, или символа ch соответственно; в противном случае возвращает false.
См. также indexOf() и lastIndexOf().
qsizetype QByteArrayView::indexOf(QByteArrayView bv, qsizetype from = 0) const
qsizetype QByteArrayView::indexOf(char ch, qsizetype from = 0) const
Возвращает индекс начала первого вхождения последовательности байтов, рассматриваемой как bv, или первого вхождения байта ch соответственно в этом представлении байтового массива, выполняя поиск вперёд с индекса from. Возвращает -1, если совпадение не найдено.
Если from равно -1, поиск начинается с последнего символа; если from равно -2, с предпоследнего символа и так далее.
См. также lastIndexOf() и contains().
bool QByteArrayView::endsWith(QByteArrayView bv) const
bool QByteArrayView::endsWith(char ch) const
Возвращает true , если это представление байтового массива заканчивается байтовым массивом bv или символом ch соответственно; в противном случае возвращает false.
См. также startsWith().
bool QByteArrayView::startsWith(QByteArrayView bv) const
bool QByteArrayView::startsWith(char ch) const
Возвращает true , если это представление байтового массива начинается с байтового массива bv или символа ch соответственно; в противном случае возвращает false.
См. также endsWith().
template <size_t Size> QByteArrayView::QByteArrayView(const char (&)[Size] data = Size)
Создаёт представление байтового массива для массива char data. Представление охватывает массив до первого встреченного '\0', или Size, что произойдёт раньше. Если вам нужен весь массив, используйте fromArray() вместо этого.
data должен оставаться валидным для всего времени существования объекта представления байтового массива.
Примечание: Этот конструктор доступен только для литералов массивов char. Причина заключается в совместимости с библиотеками C, которые предварительно определяют массивы «достаточно большой» длины, но используют только часть выделенного пространства. Для интуитивного поддержки этого в перегрузках неявных конструкторов нам необходимо остановиться на первом char(0). Это логично для массива char, но не для массива std::byte.
См. также fromArray.
template <typename Container, if_compatible_container<Container>> QByteArrayView::QByteArrayView(const Container &c)
Создает представление массива байтов для контейнера c, похожего на массив. Длина и данные устанавливаются соответственно через std::size(c) и std::data(c).
Данные контейнера должны оставаться валидными в течение всего времени жизни этого объекта представления массива байтов.
Этот конструктор участвует в разрешении перегрузки, если c — любой непрерывный контейнер с элементами совместимого типа байтов.
См. также Совместимые типы байтов.
QByteArrayView::QByteArrayView(const QByteArray &byteArray)
Создает представление массива байтов для byteArray.
byteArray.data() должен оставаться валидным в течение всего времени жизни этого объекта представления массива байтов.
Представление массива байтов будет нулевым тогда и только тогда, когда byteArray.isNull().
template <typename Byte> QByteArrayView::QByteArrayView(const Byte *data)
Создает представление массива байтов для data. Длина определяется путем поиска первого Byte(0).
data должен оставаться валидным в течение всего времени жизни этого объекта представления массива байтов.
Передача nullptr в качестве data безопасна и приводит к нулевому представлению массива байтов.
Этот конструктор участвует в разрешении перегрузки только если data не является массивом и если Byte — совместимый тип байтов.
См. также Совместимые типы байтов.
template <typename Byte, if_compatible_byte<Byte>> QByteArrayView::QByteArrayView(const Byte *first, const Byte *last)
Создает представление массива байтов для first с длиной (last - first).
Диапазон [first,last) должен оставаться валидным в течение всего времени жизни QByteArrayView.
Передача \nullptr в качестве first безопасна, если last также nullptr, и приводит к нулевому представлению массива байтов.
Поведение не определено, если last предшествует first или first — nullptr, а last — нет.
Этот конструктор участвует в разрешении перегрузки только если Byte — совместимый тип байтов.
См. также Совместимые типы байтов.
template <typename Byte, if_compatible_byte<Byte>> QByteArrayView::QByteArrayView(const Byte *data, qsizetype len)
Создает представление массива байтов для data с длиной len.
Передача [data,len) в качестве data безопасна, если len равно 0, и приводит к нулевому представлению массива байтов.
Поведение не определено, если len отрицательно или, если положительно, если data — nullptr.
Этот конструктор участвует в разрешении перегрузки только если Byte — совместимый тип байтов.
См. также Совместимые типы байтов.
QByteArrayView::QByteArrayView(std::nullptr_t)
Создает нулевое представление массива байтов.
См. также isNull().
QByteArrayView::QByteArrayView()
Создает нулевое представление массива байтов.
См. также isNull().
char QByteArrayView::at(qsizetype n) const
Возвращает символ в позиции n в этом представлении массива байтов.
Поведение не определено, если n отрицательно или не меньше size().
См. также operator[](), front() и back().
char QByteArrayView::back() const
Возвращает последний байт в массиве байтов.
Эта функция предоставлена для совместимости со STL.
Предупреждение: Вызов этой функции для пустого представления массива байтов является неопределенным поведением.
См. также front().
QByteArrayView::const_iterator QByteArrayView::begin() const
Возвращает постоянный итератор STL, указывающий на первый байт в массиве байтов.
Эта функция предоставлена для совместимости со STL.
См. также end(), cbegin(), rbegin() и data().
QByteArrayView::const_iterator QByteArrayView::cbegin() const
То же, что и begin().
Эта функция предоставлена для совместимости со STL.
См. также cend(), begin(), crbegin() и data().
QByteArrayView::const_iterator QByteArrayView::cend() const
То же, что и end().
Эта функция предоставлена для совместимости со STL.
См. также cbegin(), end() и crend().
void QByteArrayView::chop(qsizetype length)
Усекает это представление массива байтов на length символов.
То же, что и *this = first(size() - length).
Примечание: Поведение не определено, когда length < 0 или length > size().
См. также sliced(), first(), last(), chopped() и truncate().
QByteArrayView QByteArrayView::chopped(qsizetype length) const
Возвращает копию этого представления массива байтов, из которого исключены последние length байтов. Другими словами, возвращает представление массива байтов длиной size() - length, начиная с начала этого объекта.
То же, что и first(size() - length).
Примечание: Поведение не определено, когда length < 0 или length > size().
См. также first(), last(), sliced(), chop() и truncate().
[since 6.2] int QByteArrayView::compare(QByteArrayView bv, Qt::CaseSensitivity cs = Qt::CaseSensitive) const
Возвращает целое число, меньшее, равное или большее нуля, в зависимости от того, сортируется ли это QByteArrayView перед, на том же месте, что и QByteArrayView bv. Сравнение выполняется в соответствии со значением чувствительности к регистру cs.
Эта функция была добавлена в Qt 6.2.
См. также operator==().
QByteArrayView::const_pointer QByteArrayView::constData() const
Возвращает постоянный указатель char на первый байт в массиве байтов.
Примечание: Символьный массив, представленный возвращаемым значением, не гарантируется нуль-терминированным. Возвращаемый указатель безопасен только для доступа к байтам с индексами, меньшими, чем size() этого представления массива байтов.
См. также data(), begin() и end().
qsizetype QByteArrayView::count(QByteArrayView bv) const
Возвращает количество (возможно перекрывающихся) вхождений последовательности байтов, представленной в bv, в этом представлении массива байтов.
См. также contains() и indexOf().
qsizetype QByteArrayView::count(char ch) const
Это перегруженная функция.
Возвращает количество вхождений байта ch в этом представлении массива байтов.
См. также contains() и indexOf().
QByteArrayView::const_reverse_iterator QByteArrayView::crbegin() const
То же, что и rbegin().
Эта функция предоставлена для совместимости со STL.
См. также crend(), rbegin() и cbegin().
QByteArrayView::const_reverse_iterator QByteArrayView::crend() const
То же, что и rend().
Эта функция предоставлена для совместимости со STL.
См. также crbegin(), rend() и cend().
QByteArrayView::const_pointer QByteArrayView::data() const
Возвращает указатель const char на первый байт в массиве байтов.
Примечание: Массив символов, представленный возвращаемым значением, не гарантируется, что он завершается нулём. Возвращаемый указатель безопасен только для доступа к байтам с индексами, меньшими чем размер этого представления массива байтов.
bool QByteArrayView::empty() const
Возвращает true если это представление массива байтов пустое — то есть size() == 0.
Эта функция предоставлена для совместимости со STL.
См. также isEmpty(), isNull() и size().
QByteArrayView::const_iterator QByteArrayView::end() const
Возвращает const итератор в стиле STL, указывающий сразу после последнего байта в массиве байтов.
Эта функция предоставлена для совместимости со STL.
См. также begin(), cend() и rend().
QByteArrayView QByteArrayView::first(qsizetype n) const
Возвращает представление массива байтов, которое указывает на первые n байтов этого представления массива байтов. Эквивалентно sliced(0, n).
Примечание: Поведение не определено, когда n < 0 или n > size().
См. также last(), startsWith(), chopped(), chop() и truncate().
[static] template <typename Byte, size_t Size> QByteArrayView QByteArrayView::fromArray(const Byte (&)[Size] data = Size)
Создаёт представление массива байтов для литерала массива data. Представление охватывает весь массив. Это включает в себя завершающий нулевой символ литералов массивов char. Если вы не хотите, чтобы завершающий нулевой символ включался в представление, вы можете chop() его, когда уверены, что он находится в конце. В качестве альтернативы, вы можете использовать перегрузку конструктора, принимающую литерал массива char, которая создаст представление до, но не включая, первый завершающий нулевой символ в данных.
Эта функция будет работать с любым литералом массива совместимого типа байтов.
См. также Совместимые типы байтов и QByteArrayView.
char QByteArrayView::front() const
Возвращает первый байт в массиве байтов.
Эта функция предоставлена для совместимости со STL.
Предупреждение: Вызов этой функции для пустого представления массива байтов ведёт к неопределённому поведению.
См. также back().
bool QByteArrayView::isEmpty() const
Возвращает true если это представление массива байтов пустое — то есть size() == 0.
См. также empty(), isNull() и size().
bool QByteArrayView::isNull() const
Возвращает true если это представление массива байтов null — то есть data() == nullptr.
См. также empty(), isEmpty() и size().
QByteArrayView QByteArrayView::last(qsizetype n) const
Возвращает представление массива байтов, которое указывает на последние n байтов этого представления массива байтов.
Примечание: Поведение не определено, когда n < 0 или n > size().
См. также first(), endsWith(), chopped(), chop() и truncate().
[since 6.2] qsizetype QByteArrayView::lastIndexOf(QByteArrayView bv) const
Это перегруженная функция.
Возвращает позицию индекса начала последнего вхождения последовательности байтов, просматриваемых bv, в этом представлении массива байтов, выполняя поиск назад с конца этого представления массива байтов. Возвращает -1, если совпадение не найдено.
Эта функция была добавлена в Qt 6.2.
См. также indexOf() и contains().
qsizetype QByteArrayView::length() const
То же, что и size().
См. также empty(), isEmpty(), isNull() и size().
QByteArrayView::const_reverse_iterator QByteArrayView::rbegin() const
Возвращает const итератор в стиле STL обратного порядка, указывающий на первый байт в массиве байтов в обратном порядке.
Эта функция предоставлена для совместимости со STL.
См. также rend(), crbegin() и begin().
QByteArrayView::const_reverse_iterator QByteArrayView::rend() const
Возвращает итератор в стиле STL обратного порядка, указывающий на позицию сразу после последнего байта в массиве байтов в обратном порядке.
Эта функция предоставлена для совместимости со STL.
См. также rbegin(), crend() и end().
qsizetype QByteArrayView::size() const
Возвращает количество байтов в этом представлении массива байтов.
См. также empty(), isEmpty() и isNull().
QByteArrayView QByteArrayView::sliced(qsizetype pos) const
Возвращает представление массива байтов, начинающееся с позиции pos в этом объекте и простирающееся до его конца.
Примечание: Поведение не определено, когда pos < 0 или pos > size().
См. также first(), last(), chopped(), chop() и truncate().
QByteArrayView QByteArrayView::sliced(qsizetype pos, qsizetype n) const
Возвращает представление массива байтов, которое указывает на n байтов этого представления массива байтов, начиная с позиции pos.
Примечание: Поведение не определено, когда pos < 0, n < 0 или pos + n > size().
См. также first(), last(), chopped(), chop() и truncate().
QByteArray QByteArrayView::toByteArray() const
Возвращает глубокую копию данных этого представления массива байтов в виде QByteArray.
Возвращаемое значение будет null QByteArray тогда и только тогда, когда это представление массива байтов является null.
Предупреждение: QByteArrayView может хранить данные объёмом более 231 байтов, в то время как QByteArray не может. Вызов этой функции для представления массива байтов, для которого size() возвращает значение, большее чем INT_MAX / 2 , приводит к неопределённому поведению.
void QByteArrayView::truncate(qsizetype length)
Усекает это представление массива байтов до длины length.
То же, что и *this = first(length).
Примечание: Поведение не определено, когда length < 0 или length > size().
См. также first(), last(), sliced(), chopped() и chop().
char QByteArrayView::operator[](qsizetype n) const
Возвращает символ в позиции n в этом представлении массива байтов.
Поведение не определено, если n отрицательно или не меньше size().
См. также at(), front() и back().
Связанные нечлены
bool operator!=(QByteArrayView lhs, QByteArrayView rhs)
bool operator<(QByteArrayView lhs, QByteArrayView rhs)
bool operator<=(QByteArrayView lhs, QByteArrayView rhs)
bool operator==(QByteArrayView lhs, QByteArrayView rhs)
bool operator>(QByteArrayView lhs, QByteArrayView rhs)
bool operator>=(QByteArrayView lhs, QByteArrayView rhs)
Операторы сравнения для QByteArrayView.
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-6.2/qbytearrayview.html