Класс QAnyStringView
Класс QAnyStringView предоставляет унифицированный вид на строки Latin-1, UTF-8 или UTF-16 с подмножеством API класса QString только для чтения. Подробнее...
| Заголовок: | #include <QAnyStringView> |
| CMake: | find_package(Qt6 COMPONENTS Core REQUIRED) target_link_libraries(mytarget PRIVATE Qt6::Core) |
| qmake: | QT += core |
| С тех пор: | Qt 6.0 |
Примечание: Все функции в этом классе являются многопоточными.
Типы публичного доступа
| difference_type | |
| size_type |
Функции публичного доступа
| QAnyStringView(const QString &str) | |
| QAnyStringView(const QByteArray &str) | |
| QAnyStringView(const Char *str) | |
| QAnyStringView(const Char (&)[N] string = N) | |
| QAnyStringView(const Char *first, const Char *last) | |
| QAnyStringView(const Char *str, qsizetype len) | |
| QAnyStringView(std::nullptr_t) | |
| QAnyStringView() | |
| QChar | back() const |
| const void * | data() const |
| bool | empty() const |
| QChar | front() const |
| bool | isEmpty() const |
| bool | isNull() const |
| qsizetype | length() const |
| qsizetype | size() const |
| qsizetype | size_bytes() const |
| QString | toString() const |
Статические члены публичного доступа
| int | compare(QAnyStringView lhs, QAnyStringView rhs, Qt::CaseSensitivity cs = Qt::CaseSensitive) |
Связанные нечлены
| bool | operator!=(QAnyStringView lhs, QAnyStringView rhs) |
| bool | operator<(QAnyStringView lhs, QAnyStringView rhs) |
| bool | operator<=(QAnyStringView lhs, QAnyStringView rhs) |
| bool | operator==(QAnyStringView lhs, QAnyStringView rhs) |
| bool | operator>(QAnyStringView lhs, QAnyStringView rhs) |
| bool | operator>=(QAnyStringView lhs, QAnyStringView rhs) |
Подробное описание
QAnyStringView ссылается на непрерывный фрагмент строки, которым она не владеет. Она выступает в качестве интерфейсного типа для всех видов строк, без необходимости предварительного создания объекта QString.
В отличие от QStringView и QUtf8StringView, QAnyStringView может содержать строки любых из следующих кодировок: UTF-8, UTF-16 и Latin-1. Последняя поддерживается для эффективной работы старого кода. Ожидается, что к Qt 7 поддержка Latin-1 будет удалена.
Строка может быть представлена в виде массива (или совместимой с массивом структуры данных, такой как QString, std::basic_string и т. д.) char, char8_t, QChar, ushort, char16_t или (на платформах, таких как Windows, где это 16-битный тип) wchar_t.
QAnyStringView разработана как интерфейсный тип; ее основное применение — как тип параметра функции. При использовании QAnyStringView в качестве автоматических переменных или членов данных необходимо позаботиться о том, чтобы данные ссылаемой строки (например, принадлежащие QString) сохранялись дольше, чем объект QAnyStringView, чтобы избежать ссылок на удаленные данные.
При использовании в качестве интерфейсного типа QAnyStringView позволяет одной функции принимать различные источники данных строк. Одна функция, принимающая QAnyStringView, таким образом, заменяет пять перегрузок функций (принимающих QString, (const QChar*, int), QUtf8StringView, QLatin1String (но см. выше) и QChar), одновременно позволяя передавать в функцию еще больше источников данных строк, таких как u8"Hello World", строковый литерал char8_t.
Как и в других частях Qt, QAnyStringView предполагает, что данные char закодированы в UTF-8, если только они не представлены как QLatin1String.
QAnyStringView следует передавать по значению, а не по ссылке-константе:
void myfun1(QAnyStringView sv); // preferred
void myfun2(const QAnyStringView &sv); // compiles and works, but slower QAnyStringView также может использоваться в качестве возвращаемого значения функции, но это не рекомендуется. QUtf8StringView или QStringView более подходят в качестве возвращаемых значений функций. Если вы вызываете функцию, возвращающую QAnyStringView, позаботьтесь о том, чтобы QAnyStringView не сохранялась дольше, чем обещано сохранение ссылаемых данных строки функцией. В случае сомнений, получите сильную ссылку на данные, вызвав toString() для преобразования QAnyStringView в QString.
QAnyStringView — это литеральный тип.
Совместимые типы символов
QAnyStringView принимает строки различных типов символов:
-
char(как со знаком, так и без) -
char8_t(только C++20) char16_t-
wchar_t(где это 16-битный тип, например, Windows) ushortQChar
8-битные типы символов интерпретируются как данные UTF-8 (за исключением случаев представления в виде QLatin1String), а 16-битные типы символов интерпретируются как данные UTF-16 в порядке байтов хоста (также, как и в QString).
Размеры и подстроки
Все размеры и позиции в функциях QAnyStringView выражены в кодовых точках кодировки (то есть, пары суррогатов UTF-16 считаются двумя для целей этих функций, также как и в QString, и многобайтовые последовательности UTF-8 считаются двумя, тремя или четырьмя в зависимости от их длины).
См. также QUtf8StringView и QStringView.
Документация по типам членов
QAnyStringView::difference_type
Псевдоним для std::ptrdiff_t. Предоставлен для совместимости со стандартной библиотекой шаблонов.
QAnyStringView::size_type
Псевдоним для qsizetype. Предоставлен для совместимости со стандартной библиотекой шаблонов.
Документация по функциям членов
QAnyStringView::QAnyStringView(const QString &str)
Создает представление строки str.
str.data() должен оставаться допустимым для всего срока существования этого объекта представления строки.
Представление строки будет пустым тогда и только тогда, когда str.isNull().
QAnyStringView::QAnyStringView(const QByteArray &str)
Создает представление строки str. Данные в str интерпретируются как UTF-8.
str.data() должен оставаться действительным на протяжении всего срока существования этого объекта string view.
Объект string view будет равен null тогда и только тогда, когда str.isNull().
template <typename Char> QAnyStringView::QAnyStringView(const Char *str)
Создаёт представление строки str. Длина определяется по первому Char(0).
str должен оставаться действительным на протяжении всего срока существования этого объекта string view.
Передача nullptr в качестве str безопасна и приводит к созданию null-представления строки.
Этот конструктор участвует в разрешении перегрузки только если str не является массивом и если Char является совместимым типом символа.
См. также isNull() и Совместимые типы символов.
template <typename Char, size_t N> QAnyStringView::QAnyStringView(const Char (&)[N] string = N)
Создаёт представление строки-литерала string. Представление охватывает массив до первой встреченной Char(0) или N, что произойдёт раньше. Если вам нужен весь массив, используйте fromArray().
string должен оставаться действительным на протяжении всего срока существования этого объекта string view.
Этот конструктор участвует в разрешении перегрузки только если string является фактическим массивом и Char является совместимым типом символа.
См. также Совместимые типы символов.
template <typename Char, if_compatible_char<Char>> QAnyStringView::QAnyStringView(const Char *first, const Char *last)
Создаёт представление строки first с длиной (last - first).
Диапазон [first,last) должен оставаться действительным на протяжении всего срока существования этого объекта string view.
Передача \nullptr в качестве first безопасна, если last также nullptr, и приводит к созданию null-представления строки.
Поведение не определено, если last предшествует first или first является nullptr, а last нет.
Этот конструктор участвует в разрешении перегрузки только если Char является совместимым типом символа.
См. также isNull() и Совместимые типы символов.
template <typename Char, if_compatible_char<Char>> QAnyStringView::QAnyStringView(const Char *str, qsizetype len)
Создаёт представление строки str с длиной len.
Диапазон [str,len) должен оставаться действительным на протяжении всего срока существования этого объекта string view.
Передача nullptr в качестве str безопасна, если len равно 0, и приводит к созданию null-представления строки.
Поведение не определено, если len отрицательно или, если положительно, если str является nullptr.
Этот конструктор участвует в разрешении перегрузки только если Char является совместимым типом символа.
См. также isNull() и Совместимые типы символов.
QAnyStringView::QAnyStringView(std::nullptr_t)
Создаёт null-представление строки.
См. также isNull().
QAnyStringView::QAnyStringView()
Создаёт null-представление строки.
См. также isNull().
QChar QAnyStringView::back() const
Возвращает последний символ в строке.
Эта функция предоставлена для совместимости со STL.
Предупреждение: Вызов этой функции для пустого string view приводит к неопределённому поведению.
См. также front() и Размеры и подстроки.
int QAnyStringView::compare(QAnyStringView lhs, QAnyStringView rhs, Qt::CaseSensitivity cs = Qt::CaseSensitive)
Возвращает целое число, которое сравнивается с нулём, как lhs сравнивается с rhs.
Если cs равен Qt::CaseSensitive (по умолчанию), сравнение выполняется с учётом регистра; в противном случае сравнение выполняется без учёта регистра.
См. также operator==(), operator<() и operator>().
const void *QAnyStringView::data() const
Возвращает указатель на первый символ в строке.
Примечание: Массив символов, представленный возвращаемым значением, не является нуль-терминированным.
См. также size_bytes().
bool QAnyStringView::empty() const
Возвращает значение true, если string view пуст, то есть size() == 0.
Эта функция предоставлена для совместимости со STL.
См. также isEmpty(), isNull() и size().
QChar QAnyStringView::front() const
Возвращает первый символ в строке.
Эта функция предоставлена для совместимости со STL.
Предупреждение: Вызов этой функции для пустого string view приводит к неопределённому поведению.
См. также back() и Размеры и подстроки.
bool QAnyStringView::isEmpty() const
Возвращает значение true, если string view пуст, то есть size() == 0.
Эта функция предоставлена для совместимости с другими контейнерами Qt.
См. также empty(), isNull() и size().
bool QAnyStringView::isNull() const
Возвращает значение true, если string view равен null, то есть data() == nullptr.
Эта функция предоставлена для совместимости с другими контейнерами Qt.
См. также empty(), isEmpty() и size().
qsizetype QAnyStringView::length() const
То же, что и size().
Эта функция предоставлена для совместимости с другими контейнерами Qt.
См. также size().
qsizetype QAnyStringView::size() const
Возвращает размер этого string view в кодовых точках кодировки.
См. также empty(), isEmpty(), isNull(), size_bytes() и Размеры и подстроки.
qsizetype QAnyStringView::size_bytes() const
Возвращает размер этого string view в байтах, а не в кодовых точках.
Вы можете использовать эту функцию вместе с data() для хэширования или сериализации.
Эта функция предоставлена для совместимости со STL.
QString QAnyStringView::toString() const
Возвращает глубокую копию данных этого string view в виде QString.
Возвращаемое значение будет null QString тогда и только тогда, когда этот string view равен null.
Связанные нечленные функции
bool operator!=(QAnyStringView lhs, QAnyStringView rhs)
bool operator<(QAnyStringView lhs, QAnyStringView rhs)
bool operator<=(QAnyStringView lhs, QAnyStringView rhs)
bool operator==(QAnyStringView lhs, QAnyStringView rhs)
bool operator>(QAnyStringView lhs, QAnyStringView rhs)
bool operator>=(QAnyStringView lhs, QAnyStringView rhs)
Операторы сравнения lhs с rhs.
См. также compare().
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-6.2/qanystringview.html