Класс 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 | 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() должно оставаться валидным в течение всего жизненного цикла этого объекта представления строки.
Представление строки будет пустым тогда и только тогда, когда str.isNull().
template <typename Char> QAnyStringView::QAnyStringView(const Char *str)
Создаёт представление строки str. Длина определяется по первому Char(0).
str должен оставаться валидным в течение всего жизненного цикла этого объекта представления строки.
Передача nullptr в качестве str безопасна и приводит к представлению пустой строки.
Этот конструктор участвует в разрешении перегрузки только если str не является массивом и если Char является совместимым типом символов.
См. также isNull() и Совместимые типы символов.
template <typename Char, size_t N> QAnyStringView::QAnyStringView(const Char (&)[N] string = N)
Создаёт представление строки символьной литеральной константы string. Представление охватывает массив до первого Char(0), или N, что произойдёт раньше. Если вам нужен весь массив, используйте fromArray() вместо этого.
string должен оставаться валидным в течение всего жизненного цикла этого объекта представления строки.
Этот конструктор участвует в разрешении перегрузки только если string является фактическим массивом и Char является совместимым типом символов.
См. также Совместимые типы символов.
template <typename Char, if_compatible_char<Char>> QAnyStringView::QAnyStringView(const Char *first, const Char *last)
Создаёт представление строки first длиной (last - first).
Диапазон [first,last) должен оставаться валидным в течение всего жизненного цикла этого объекта представления строки.
Передача \nullptr в качестве first безопасна, если last также nullptr, и приводит к представлению пустой строки.
Поведение неопределено, если 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) должен оставаться валидным в течение всего жизненного цикла этого объекта представления строки.
Передача nullptr в качестве str безопасна, если len равно 0, и приводит к представлению пустой строки.
Поведение неопределено, если len отрицательное или, если положительное, если str является nullptr.
Этот конструктор участвует в разрешении перегрузки только если Char является совместимым типом символов.
См. также isNull() и Совместимые типы символов.
QAnyStringView::QAnyStringView(std::nullptr_t)
Создаёт представление пустой строки.
См. также isNull().
QAnyStringView::QAnyStringView()
Создаёт представление пустой строки.
См. также isNull().
QChar QAnyStringView::back() const
Возвращает последний символ в строке.
Эта функция предоставлена для совместимости со STL.
Предупреждение: Вызов этой функции для пустого представления строки приводит к неопределённому поведению.
См. также 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
Возвращает, является ли это представление строки пустым — то есть, если size() == 0.
Эта функция предоставлена для совместимости со STL.
См. также isEmpty(), isNull() и size().
QChar QAnyStringView::front() const
Возвращает первый символ в строке.
Эта функция предоставлена для совместимости со STL.
Предупреждение: Вызов этой функции для пустого представления строки приводит к неопределённому поведению.
См. также back() и Размеры и подстроки.
bool QAnyStringView::isEmpty() const
Возвращает, является ли это представление строки пустым — то есть, если size() == 0.
Эта функция предоставляется для совместимости с другими контейнерами Qt.
См. также empty(), isNull() и size().
bool QAnyStringView::isNull() const
Возвращает, является ли это представление строки пустым — то есть, если data() == nullptr.
Эта функция предоставляется для совместимости с другими контейнерами Qt.
См. также empty(), isEmpty() и size().
qsizetype QAnyStringView::size() const
Возвращает размер этого представления строки в кодовых точках кодировки.
См. также empty(), isEmpty(), isNull(), size_bytes() и Размеры и подстроки.
qsizetype QAnyStringView::size_bytes() const
Возвращает размер этого представления строки в байтах, а не кодовых точках.
Вы можете использовать эту функцию вместе с data() для хеширования или сериализации.
Эта функция предоставлена для совместимости со STL.
QString QAnyStringView::toString() const
Возвращает глубокую копию данных этого представления строки в виде QString.
Возвращаемое значение будет пустым QString тогда и только тогда, когда это представление строки пустое.
Связанные нечленные функции
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.0/qanystringview.html