Класс 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 |
| 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 = -1) const |
| qsizetype | lastIndexOf(char ch, qsizetype from = -1) 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) |
Подробное описание
Класс QByteArrayView ссылается на непрерывный фрагмент сырых байтов, которым он не владеет. Он действует как интерфейсный тип для всех видов данных, похожих на массив байтов, без необходимости предварительного создания QByteArray.
Данные массива байтов могут быть представлены как массив (или совместимая с массивом структура данных, такая как QByteArray, std::basic_string и т. д.) char, signed char, unsigned char или std::byte.
QByteArrayView разработан как интерфейсный тип; его основное применение — в качестве типа параметра функции. При использовании QByteArrayView в качестве автоматических переменных или членов данных необходимо следить за тем, чтобы ссылаемые данные (например, принадлежащие QByteArray) существовали дольше, чем QByteArrayView, на всех путях кода, чтобы не ссылка 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 предоставляет итератор const в стиле STL для QByteArrayView.
См. также iterator и const_reverse_iterator.
QByteArrayView::const_pointer
Псевдоним для value_type *. Предоставлен для совместимости со STL.
QByteArrayView::const_reference
Псевдоним для value_type &. Предоставлен для совместимости со STL.
QByteArrayView::const_reverse_iterator
Этот typedef предоставляет обратный итератор const в стиле STL для QByteArrayView.
См. также reverse_iterator и const_iterator.
QByteArrayView::difference_type
Псевдоним для std::ptrdiff_t. Предоставлен для совместимости со STL.
QByteArrayView::iterator
Этот typedef предоставляет итератор const в стиле 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 предоставляет обратный итератор const в стиле 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 = -1) const
qsizetype QByteArrayView::lastIndexOf(char ch, qsizetype from = -1) const
Возвращает позицию индекса начала последнего вхождения последовательности байтов, представленных bv, или последнего вхождения байта ch соответственно в этом представлении массива байтов, выполняя поиск вперед с позиции индекса from. Если from равно -1 (по умолчанию), поиск начинается с конца представления массива байтов. Возвращает -1, если совпадения не найдено.
См. также 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, поиск начинается с последнего символа; если равно -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() должен оставаться действительным в течение всего срока существования этого объекта представления массива байтов.
Представление массива байтов будет null тогда и только тогда, когда byteArray.isNull().
template <typename Byte> QByteArrayView::QByteArrayView(const Byte *data)
Создаёт представление массива байтов на data. Длина определяется путём сканирования первого Byte(0).
data должен оставаться действительным в течение всего срока существования этого объекта представления массива байтов.
Передача nullptr в качестве data безопасна и приводит к представлению массива байтов null.
Этот конструктор участвует в разрешении перегрузки только если 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, и приводит к представлению массива байтов null.
Поведение не определено, если last предшествует first или first равно nullptr, а last нет.
Этот конструктор участвует в разрешении перегрузки только если Byte — это совместимый тип байта.
См. также Совместимые типы байтов.
template <typename Byte, if_compatible_byte<Byte>> QByteArrayView::QByteArrayView(const Byte *data, qsizetype len)
Создаёт представление массива байтов на основе data с длиной len.
Диапазон [data,len) должен оставаться валидным на протяжении всего времени жизни этого QByteArrayView.
Передача nullptr в качестве 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().
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
Возвращает постоянный указатель char на первый байт в массиве байтов.
Примечание: Массив символов, представленный возвращаемым значением, не гарантируется как завершённый нулём. Возвращаемый указатель безопасен только для доступа к байтам с индексами меньше size() этого представления массива байтов.
bool QByteArrayView::empty() const
Возвращает true, если это представление массива байтов пусто — то есть, size() == 0.
Эта функция предоставлена для совместимости со STL.
См. также isEmpty(), isNull() и size().
QByteArrayView::const_iterator QByteArrayView::end() 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() его, когда уверены, что он находится в конце. В качестве альтернативы вы можете использовать перегрузку конструктора, принимающую литерал массива символов, который создаст представление до, но не включая, первый завершающий нуль в данных.
Эта функция будет работать с любым литералом массива совместимого типа байта.
См. также Совместимые типы байтов и 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().
QByteArrayView::const_reverse_iterator QByteArrayView::rbegin() 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().
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-6.1/qbytearrayview.html