Класс QStringView
Класс QStringView предоставляет унифицированный вид на UTF-16 строки с подмножеством чтений-только API класса QString. Подробнее...
| Заголовок: | #include <QStringView> |
| qmake: | QT += core |
| С момента: | Qt 5.10 |
Примечание: Все функции в этом классе являются взаимоисключающими.
Публичные типы
| typedef | const_iterator |
| typedef | const_pointer |
| typedef | const_reference |
| typedef | const_reverse_iterator |
| typedef | difference_type |
| typedef | iterator |
| typedef | pointer |
| typedef | reference |
| typedef | reverse_iterator |
| typedef | size_type |
| typedef | storage_type |
| typedef | value_type |
Публичные функции
| QStringView() | |
| QStringView(std::nullptr_t) | |
| QStringView(const Char *str, qsizetype len) | |
| QStringView(const Char *first, const Char *last) | |
| QStringView(const Char (&)[N] string = ...) | |
| QStringView(const Char *str) | |
| QStringView(const QString &str) | |
| QStringView(const QStringRef &str) | |
| QStringView(const StdBasicString &str) | |
| QChar | at(qsizetype n) const |
| QChar | back() const |
| QStringView::const_iterator | begin() const |
| QStringView::const_iterator | cbegin() const |
| QStringView::const_iterator | cend() const |
| void | chop(qsizetype length) |
| QStringView | chopped(qsizetype length) const |
| int | compare(QStringView other, Qt::CaseSensitivity cs = Qt::CaseSensitive) const |
| QStringView::const_reverse_iterator | crbegin() const |
| QStringView::const_reverse_iterator | crend() const |
| QStringView::const_pointer | data() const |
| bool | empty() const |
| QStringView::const_iterator | end() const |
| bool | endsWith(QStringView str, Qt::CaseSensitivity cs = Qt::CaseSensitive) const |
| bool | endsWith(QLatin1String l1, Qt::CaseSensitivity cs = Qt::CaseSensitive) const |
| bool | endsWith(QChar ch) const |
| bool | endsWith(QChar ch, Qt::CaseSensitivity cs) const |
| QChar | first() const |
| QChar | front() const |
| bool | isEmpty() const |
| bool | isNull() const |
| bool | isRightToLeft() const |
| QChar | last() const |
| QStringView | left(qsizetype length) const |
| int | length() const |
| QStringView | mid(qsizetype start) const |
| QStringView | mid(qsizetype start, qsizetype length) const |
| QStringView::const_reverse_iterator | rbegin() const |
| QStringView::const_reverse_iterator | rend() const |
| QStringView | right(qsizetype length) const |
| qsizetype | size() const |
| bool | startsWith(QStringView str, Qt::CaseSensitivity cs = Qt::CaseSensitive) const |
| bool | startsWith(QLatin1String l1, Qt::CaseSensitivity cs = Qt::CaseSensitive) const |
| bool | startsWith(QChar ch) const |
| bool | startsWith(QChar ch, Qt::CaseSensitivity cs) const |
| QByteArray | toLatin1() const |
| QByteArray | toLocal8Bit() const |
| QString | toString() const |
| QVector<uint> | toUcs4() const |
| QByteArray | toUtf8() const |
| QStringView | trimmed() const |
| void | truncate(qsizetype length) |
| const QStringView::storage_type * | utf16() const |
| QChar | operator[](qsizetype n) const |
Связанные нечленные функции
| uint | qHash(QStringView key, uint seed = ...) |
Подробное описание
Класс QStringView предоставляет унифицированный вид на UTF-16 строки с подмножеством только для чтения API QString.
QStringView ссылается на непрерывный фрагмент UTF-16 строки, которой не владеет. Он действует как тип интерфейса для всех типов UTF-16 строк, без необходимости сначала создавать QString.
UTF-16 строка может быть представлена как массив (или совместимая с массивом структура данных, такая как QString, std::basic_string и т. д.) QChar, ushort, char16_t (на компиляторах, поддерживающих C++11 Unicode строки) или (на платформах, таких как Windows, где это 16-битный тип) wchar_t.
QStringView разработан как тип интерфейса; его основное использование — в качестве типа параметра функции. При использовании QStringView в качестве автоматических переменных или членов данных необходимо позаботиться о том, чтобы данные ссылаемой строки (например, принадлежащие QString) сохранялись дольше, чем QStringView, во всех путях кода, иначе строковый указатель может указывать на удалённые данные.
При использовании в качестве типа интерфейса, QStringView позволяет одной функции принимать широкий спектр источников данных строк UTF-16. Одна функция, принимающая QStringView, таким образом, заменяет три перегрузки функций (принимающих QString, QStringRef и (const QChar*, int)), одновременно позволяя передавать в функцию ещё больше источников данных строк, таких как u"Hello World", а также char16_t строковые литералы.
QStringViews следует передавать по значению, а не по ссылке-константе:
void myfun1(QStringView sv); // preferred
void myfun2(const QStringView &sv); // compiles and works, but slower Если вы хотите предоставить своим пользователям максимальную свободу в выборе строк, которые они могут передать вашей функции, дополните перегрузку QStringView перегрузками для
-
QChar: эта перегрузка может делегировать вызов версии QStringView:
void fun(QChar ch) { fun(QStringView(&ch, 1)); }хотя по техническим причинам QStringView не может предоставить конструктор QChar самостоятельно.
- QString: если вы сохраняете неизменную копию строки и хотите воспользоваться неявным совместным использованием QString.
- QLatin1String: если вы можете реализовать функцию без предварительного преобразования QLatin1String в UTF-16; пользователи ожидают, что функция, перегруженная для QLatin1String, будет выполнять строго меньше операций выделения памяти, чем семантически эквивалентный вызов версии QStringView, включающий построение QString из QLatin1String.
QStringView также может использоваться в качестве возвращаемого значения функции. Если вы вызываете функцию, возвращающую QStringView, будьте внимательны, чтобы не хранить QStringView дольше, чем функция гарантирует сохранение жизни ссылаемых данных строки. В случае сомнений, получите сильную ссылку на данные, вызвав toString() для преобразования QStringView в QString.
QStringView является типом литерала, но поскольку он хранит данные как char16_t, итерация не constexpr (преобразования из const char16_t* в const QChar*, что запрещено в constexpr функциях). Вместо этого вы можете использовать цикл с индексами и/или utf16() в constexpr контекстах.
Примечание: Мы настоятельно не рекомендуем использовать QList<QStringView>, так как QList является очень неэффективным контейнером для QStringViews (он будет выделять каждый элемент в куче). Используйте QVector (или std::vector) для хранения QStringViews вместо этого.
См. также QString и QStringRef.
Документация по типу члена
typedef QStringView::const_iterator
Этот typedef предоставляет итератор по умолчанию для QStringView.
См. также iterator и const_reverse_iterator.
typedef QStringView::const_pointer
Псевдоним для value_type *. Предоставлен для совместимости со стандартной библиотекой шаблонов.
typedef QStringView::const_reference
Псевдоним для value_type &. Предоставлен для совместимости со стандартной библиотекой шаблонов.
typedef QStringView::const_reverse_iterator
Этот typedef предоставляет обратный итератор по умолчанию для QStringView.
См. также reverse_iterator и const_iterator.
typedef QStringView::difference_type
Псевдоним для std::ptrdiff_t. Предоставлен для совместимости со стандартной библиотекой шаблонов.
typedef QStringView::iterator
Этот typedef предоставляет итератор по умолчанию для QStringView.
QStringView не поддерживает изменяемые итераторы, поэтому он эквивалентен const_iterator.
См. также const_iterator и reverse_iterator.
typedef QStringView::pointer
Псевдоним для value_type *. Предоставлен для совместимости со стандартной библиотекой шаблонов.
QStringView не поддерживает изменяемые указатели, поэтому он эквивалентен const_pointer.
typedef QStringView::reference
Псевдоним для value_type &. Предоставлен для совместимости со стандартной библиотекой шаблонов.
QStringView не поддерживает изменяемые ссылки, поэтому он эквивалентен const_reference.
typedef QStringView::reverse_iterator
Этот typedef предоставляет обратный итератор по умолчанию для QStringView.
QStringView не поддерживает изменяемые обратные итераторы, поэтому он эквивалентен const_reverse_iterator.
См. также const_reverse_iterator и iterator.
typedef QStringView::size_type
Псевдоним для qsizetype. Предоставлен для совместимости со стандартной библиотекой шаблонов.
В отличие от других классов Qt, QStringView использует qsizetype в качестве своего size_type, чтобы позволить принимать данные из std::basic_string без усечения. Функции API Qt, например, length(), возвращают int, в то время как совместимые со стандартной библиотекой шаблонов функции, например, size(), возвращают size_type.
typedef QStringView::storage_type
Псевдоним для char16_t для не-Windows платформ или если определен Q_COMPILER_UNICODE_STRINGS. В противном случае псевдоним для wchar_t.
typedef QStringView::value_type
Псевдоним для const QChar. Предоставлен для совместимости со стандартной библиотекой шаблонов.
Документация по документации функций членов
bool QStringView::endsWith(QStringView str, Qt::CaseSensitivity cs = Qt::CaseSensitive) const
bool QStringView::endsWith(QLatin1String l1, Qt::CaseSensitivity cs = Qt::CaseSensitive) const
bool QStringView::endsWith(QChar ch) const
bool QStringView::endsWith(QChar ch, Qt::CaseSensitivity cs) const
Возвращает true если эта строка-представление заканчивается строкой-представлением str, латинской строкой l1 или символом ch соответственно; в противном случае возвращает false.
Если cs равно Qt::CaseSensitive (по умолчанию), поиск выполняется с учётом регистра; в противном случае поиск выполняется без учёта регистра.
См. также startsWith().
bool QStringView::startsWith(QStringView str, Qt::CaseSensitivity cs = Qt::CaseSensitive) const
bool QStringView::startsWith(QLatin1String l1, Qt::CaseSensitivity cs = Qt::CaseSensitive) const
bool QStringView::startsWith(QChar ch) const
bool QStringView::startsWith(QChar ch, Qt::CaseSensitivity cs) const
Возвращает true если эта строка-представление начинается со строкой-представлением str, латинской строкой l1 или символом ch соответственно; в противном случае возвращает false.
Если cs равно Qt::CaseSensitive (по умолчанию), поиск выполняется с учётом регистра; в противном случае поиск выполняется без учёта регистра.
См. также endsWith().
QStringView::QStringView()
Конструирует пустую строку-представление.
См. также isNull().
QStringView::QStringView(std::nullptr_t)
Конструирует пустую строку-представление.
См. также isNull().
QStringView::QStringView(const Char *str, qsizetype len)
Конструирует строку-представление на str с длиной len.
Диапазон [str,len) должен оставаться валидным в течение всего времени жизни объекта этой строки-представления.
Передача nullptr в качестве str безопасна, если len равно 0, и приводит к пустой строке-представлению.
Поведение не определено, если len отрицательно или, если len положительно, если str является nullptr.
Этот конструктор участвует только в разрешении перегрузки, если Char является совместимым типом символа. Совместимые типы символов: QChar, ushort, char16_t и (на платформах, таких как Windows, где это 16-битный тип) wchar_t.
QStringView::QStringView(const Char *first, const Char *last)
Создаёт представление строки first длиной (last - first).
Диапазон [first,last) должен оставаться валидным на протяжении всего жизненного цикла этого объекта представления строки.
Передача nullptr в качестве first безопасна, если last также равен nullptr, и приводит к представлению пустой строки.
Поведение не определено, если last предшествует first или first равно nullptr, а last нет.
Этот конструктор участвует в разрешении перегрузки только если Char — совместимый тип символов. Совместимые типы символов: QChar, ushort, char16_t и (на платформах, таких как Windows, где это 16-битный тип) wchar_t.
QStringView::QStringView(const Char (&)[N] string = ...)
Создаёт представление строки на основе строковой константы символов string. Длина устанавливается в N-1, исключая заключительный {Char(0)}. Если вам нужна полная строка, используйте конструктор из указателя и размера вместо этого:
auto sv = QStringView(array, std::size(array)); // using C++17 std::size()
string должен оставаться валидным на протяжении всего жизненного цикла этого объекта представления строки.
Этот конструктор участвует в разрешении перегрузки только если string является фактическим массивом и Char — совместимый тип символов. Совместимые типы символов: QChar, ushort, char16_t и (на платформах, таких как Windows, где это 16-битный тип) wchar_t.
QStringView::QStringView(const Char *str)
Создаёт представление строки на основе str. Длина определяется путём поиска первого Char(0).
str должен оставаться валидным на протяжении всего жизненного цикла этого объекта представления строки.
Передача nullptr в качестве str безопасна и приводит к представлению пустой строки.
Этот конструктор участвует в разрешении перегрузки только если str не является массивом и если Char — совместимый тип символов. Совместимые типы символов: QChar, ushort, char16_t и (на платформах, таких как Windows, где это 16-битный тип) wchar_t.
QStringView::QStringView(const QString &str)
Создаёт представление строки на основе str.
str.data() должен оставаться валидным на протяжении всего жизненного цикла этого объекта представления строки.
Представление строки будет пустым тогда и только тогда, когда str.isNull().
QStringView::QStringView(const QStringRef &str)
Создаёт представление строки на основе str.
str.data() должен оставаться валидным на протяжении всего жизненного цикла этого объекта представления строки.
Представление строки будет пустым тогда и только тогда, когда str.isNull().
QStringView::QStringView(const StdBasicString &str)
Создаёт представление строки на основе str. Длина берётся из str.size().
str.data() должен оставаться валидным на протяжении всего жизненного цикла этого объекта представления строки.
Этот конструктор участвует в разрешении перегрузки только если StdBasicString является экземпляром std::basic_string с совместимым типом символов. Совместимые типы символов: QChar, ushort, char16_t и (на платформах, таких как Windows, где это 16-битный тип) wchar_t.
Представление строки будет пустым тогда и только тогда, когда str.empty(). Не определено, может ли этот конструктор привести к представлению пустой строки (str.data() должно возвращать nullptr для этого).
См. также isNull() и isEmpty().
QChar QStringView::at(qsizetype n) const
Возвращает символ в позиции n в этом представлении строки.
Поведение не определено, если n отрицательно или не меньше size().
См. также operator[](), front() и back().
QChar QStringView::back() const
Возвращает последний символ в строке. То же самое, что и last().
Эта функция предоставляется для совместимости со STL.
Предупреждение: Вызов этой функции для пустого представления строки приводит к неопределённому поведению.
См. также front(), first() и last().
QStringView::const_iterator QStringView::begin() const
Возвращает константный итератор STL, указывающий на первый символ в строке.
Эта функция предоставляется для совместимости со STL.
См. также end(), cbegin(), rbegin() и data().
QStringView::const_iterator QStringView::cbegin() const
То же самое, что и begin().
Эта функция предоставляется для совместимости со STL.
См. также cend(), begin(), crbegin() и data().
QStringView::const_iterator QStringView::cend() const
То же самое, что и end().
Эта функция предоставляется для совместимости со STL.
См. также cbegin(), end() и crend().
void QStringView::chop(qsizetype length)
Усекает это представление строки на length символов.
То же самое, что и *this = left(size() - length).
Примечание: Поведение не определено, когда length < 0 или length > size().
См. также mid(), left(), right(), chopped() и truncate().
QStringView QStringView::chopped(qsizetype length) const
Возвращает подстроку длиной size() - length, начиная с начала этого объекта.
То же самое, что и left(size() - length).
Примечание: Поведение не определено, когда length < 0 или length > size().
См. также mid(), left(), right(), chop() и truncate().
int QStringView::compare(QStringView other, Qt::CaseSensitivity cs = Qt::CaseSensitive) const
Сравнивает это представление строки с представлением строки other и возвращает целое число, меньшее, равное или больше нуля, если это представление строки меньше, равно или больше, чем представление строки other.
Если cs равно Qt::CaseSensitive, сравнение чувствительно к регистру; в противном случае сравнение нечувствительно к регистру.
Эта функция была введена в Qt 5.12.
См. также operator==(), operator<() и operator>().
QStringView::const_reverse_iterator QStringView::crbegin() const
То же самое, что и rbegin().
Эта функция предоставляется для совместимости со STL.
См. также crend(), rbegin() и cbegin().
QStringView::const_reverse_iterator QStringView::crend() const
То же самое, что и rend().
Эта функция предоставляется для совместимости со STL.
См. также crbegin(), rend() и cend().
QStringView::const_pointer QStringView::data() const
Возвращает константный указатель на первый символ в строке.
Примечание: Массив символов, представленный возвращаемым значением, не является завершённым нулём.
См. также begin(), end() и utf16().
bool QStringView::empty() const
Возвращает значение true, если это представление строки пусто — то есть, если size() == 0.
Эта функция предоставляется для совместимости со STL.
См. также isEmpty(), isNull(), size() и length().
QStringView::const_iterator QStringView::end() const
Возвращает константный итератор STL, указывающий на воображаемый символ после последнего символа в списке.
Эта функция предоставляется для совместимости со STL.
См. также begin(), cend() и rend().
QChar QStringView::first() const
Возвращает первый символ в строке. То же, что и front().
Эта функция предоставлена для совместимости с другими контейнерами Qt.
Предупреждение: Вызов этой функции для пустой строковой области приводит к неопределённому поведению.
См. также front(), back() и last().
QChar QStringView::front() const
Возвращает первый символ в строке. То же, что и first().
Эта функция предоставлена для совместимости со STL.
Предупреждение: Вызов этой функции для пустой строковой области приводит к неопределённому поведению.
См. также back(), first() и last().
bool QStringView::isEmpty() const
Возвращает значение true, если эта строковая область пуста, т.е. size() == 0.
Эта функция предоставлена для совместимости с другими контейнерами Qt.
См. также empty(), isNull(), size() и length().
bool QStringView::isNull() const
Возвращает значение true, если эта строковая область равна null, т.е. data() == nullptr.
Функция предоставлена для совместимости с другими контейнерами Qt.
См. также empty(), isEmpty(), size() и length().
bool QStringView::isRightToLeft() const
Возвращает значение true, если строка читается справа налево.
Функция была добавлена в Qt 5.11.
См. также QString::isRightToLeft().
QChar QStringView::last() const
Возвращает последний символ в строке. То же, что и back().
Эта функция предоставлена для совместимости с другими контейнерами Qt.
Предупреждение: Вызов этой функции для пустой строковой области приводит к неопределённому поведению.
См. также back(), front() и first().
QStringView QStringView::left(qsizetype length) const
Возвращает подстроку длины length, начинающуюся с позиции 0 в этом объекте.
Примечание: Поведение неопределено, когда length < 0 или length > size().
См. также mid(), right(), chopped(), chop() и truncate().
int QStringView::length() const
То же, что и size(), за исключением того, что возвращает результат в виде int.
Эта функция предоставлена для совместимости с другими контейнерами Qt.
Предупреждение: QStringView может представлять строки с более чем 231 символами. Вызов этой функции для строковой области, для которой size() возвращает значение больше INT_MAX, приводит к неопределённому поведению.
См. также empty(), isEmpty(), isNull() и size().
QStringView QStringView::mid(qsizetype start) const
Возвращает подстроку, начинающуюся с позиции start в этом объекте и продолжающуюся до конца строки.
Примечание: Поведение неопределено, когда start < 0 или start > size().
См. также left(), right(), chopped(), chop() и truncate().
QStringView QStringView::mid(qsizetype start, qsizetype length) const
Это перегруженная функция.
Возвращает подстроку длины length, начинающуюся с позиции start в этом объекте.
Примечание: Поведение неопределено, когда start < 0, length < 0 или start + length > size().
См. также left(), right(), chopped(), chop() и truncate().
QStringView::const_reverse_iterator QStringView::rbegin() const
Возвращает обратный итератор типа const, указывающий на первый символ в строке в обратном порядке.
Функция предоставлена для совместимости со STL.
См. также rend(), crbegin() и begin().
QStringView::const_reverse_iterator QStringView::rend() const
Возвращает обратный итератор, указывающий на позицию, следующую за последним символом в строке в обратном порядке.
Функция предоставлена для совместимости со STL.
См. также rbegin(), crend() и end().
QStringView QStringView::right(qsizetype length) const
Возвращает подстроку длины length, начинающуюся с позиции size() - length в этом объекте.
Примечание: Поведение неопределено, когда length < 0 или length > size().
См. также mid(), left(), chopped(), chop() и truncate().
qsizetype QStringView::size() const
Возвращает размер этой строковой области в кодовых точках UTF-16 (т.е. пары суррогатов учитываются как две для этой функции, как и в QString и QStringRef).
См. также empty(), isEmpty(), isNull() и length().
QByteArray QStringView::toLatin1() const
Возвращает представление строки в кодировке Latin-1 в виде QByteArray.
Поведение неопределено, если строка содержит символы, не поддерживаемые Latin-1.
См. также toUtf8(), toLocal8Bit() и QTextCodec.
QByteArray QStringView::toLocal8Bit() const
Возвращает представление строки в локальной 8-битной кодировке в виде QByteArray.
Используется QTextCodec::codecForLocale() для преобразования из Unicode. Если кодировка локального языка определить не удалось, эта функция делает то же, что и toLatin1().
Поведение неопределено, если строка содержит символы, не поддерживаемые 8-битной кодировкой локального языка.
См. также toLatin1(), toUtf8() и QTextCodec.
QString QStringView::toString() const
Возвращает глубокую копию данных этой строковой области в виде QString.
Возвращаемое значение будет нулевой QString тогда и только тогда, когда эта строковая область равна null.
Предупреждение: QStringView может хранить строки с более чем 230 символами, тогда как QString нет. Вызов этой функции для строковой области, для которой size() возвращает значение больше INT_MAX / 2, приводит к неопределённому поведению.
QVector<uint> QStringView::toUcs4() const
Возвращает представление строки в UCS-4/UTF-32 в виде QVector<uint>.
UCS-4 — это кодировка Unicode, поэтому преобразование без потерь. Все символы из этой строки будут закодированы в UCS-4. Любая некорректная последовательность кодовых единиц в этой строке заменяется замещающим символом Unicode (QChar::ReplacementCharacter, который соответствует U+FFFD).
Возвращаемый вектор не имеет нулевого терминатора.
См. также toUtf8(), toLatin1(), toLocal8Bit() и QTextCodec.
QByteArray QStringView::toUtf8() const
Возвращает представление строки в UTF-8 в виде QByteArray.
UTF-8 — это кодировка Unicode и может представлять все символы в строке Unicode, как в QString.
См. также toLatin1(), toLocal8Bit() и QTextCodec.
QStringView QStringView::trimmed() const
Удаляет начальные и конечные пробелы и возвращает результат.
Пробелы — это любые символы, для которых QChar::isSpace() возвращает true. Включает ASCII-символы '\t', '\n', '\v', '\f', '\r' и ' '.
void QStringView::truncate(qsizetype length)
Усекает эту строку до длины length.
То же самое, что и *this = left(length).
Примечание: Поведение не определено, когда length < 0 или length > size().
См. также mid(), left(), right(), chopped(), и chop().
const QStringView::storage_type *QStringView::utf16() const
Возвращает указатель на первый символ в строке.
storage_type это char16_t.
Примечание: Массив символов, представленный возвращаемым значением, не завершается нулём.
См. также begin(), end(), и data().
QChar QStringView::operator[](qsizetype n) const
Возвращает символ в позиции n в этой строке.
Поведение не определено, если n отрицательно или не меньше size().
См. также at(), front(), и back().
Связанные внешние члены
uint qHash(QStringView key, uint seed = ...)
Возвращает значение хэша для key, используя seed для инициализации вычисления.
Эта функция была добавлена в Qt 5.10.
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-5.12/qstringview.html