En esta página

QUtf8StringView Class

La clase QUtf8StringView proporciona una vista unificada de las cadenas UTF-8 con un subconjunto de sólo lectura de la API QString. Más...

Cabecera: #include <QUtf8StringView>
CMake: find_package(Qt6 REQUIRED COMPONENTS Core)
target_link_libraries(mytarget PRIVATE Qt6::Core)
qmake: QT += core
Desde: Qt 6.0

Esta clase es fuertemente comparable.

Esta clase es fuertemente comparable con char16_t, QChar, const char16_t *, QString, QStringView, y QLatin1StringView.

Esta clase es fuertemente comparable con const char *, QByteArray, y QByteArrayView.

El contenido de las matrices de bytes se interpreta como UTF-8.

Nota: Todas las funciones de esta clase son reentrantes.

Tipos públicos

Funciones Públicas

QUtf8StringView()
QUtf8StringView(const Char (&)[N] string)
QUtf8StringView(const Char *str)
QUtf8StringView(const Container &str)
QUtf8StringView(std::nullptr_t)
QUtf8StringView(const Char *first, const Char *last)
QUtf8StringView(const Char *str, qsizetype len)
(since 6.9) QString arg(Args &&... args) const
QUtf8StringView::storage_type at(qsizetype n) const
QUtf8StringView::storage_type back() const
QUtf8StringView::const_iterator begin() const
QUtf8StringView::const_iterator cbegin() const
QUtf8StringView::const_iterator cend() const
void chop(qsizetype n)
QUtf8StringView chopped(qsizetype n) const
(since 6.5) int compare(QLatin1StringView str, Qt::CaseSensitivity cs = Qt::CaseSensitive) const
(since 6.5) int compare(QStringView str, Qt::CaseSensitivity cs = Qt::CaseSensitive) const
(since 6.5) int compare(QUtf8StringView str, Qt::CaseSensitivity cs = Qt::CaseSensitive) const
QUtf8StringView::const_reverse_iterator crbegin() const
QUtf8StringView::const_reverse_iterator crend() const
QUtf8StringView::const_pointer data() const
bool empty() const
QUtf8StringView::const_iterator end() const
QUtf8StringView first(qsizetype n) const
QUtf8StringView::storage_type front() const
bool isEmpty() const
bool isNull() const
(since 6.3) bool isValidUtf8() const
QUtf8StringView last(qsizetype n) const
qsizetype length() const
(since 6.8) qsizetype max_size() const
QUtf8StringView::const_reverse_iterator rbegin() const
QUtf8StringView::const_reverse_iterator rend() const
qsizetype size() const
(since 6.8) QUtf8StringView &slice(qsizetype pos, qsizetype n)
(since 6.8) QUtf8StringView &slice(qsizetype pos)
QUtf8StringView sliced(qsizetype pos) const
QUtf8StringView sliced(qsizetype pos, qsizetype n) const
QString toString() const
void truncate(qsizetype n)
const char8_t *utf8() const
(since 6.7) operator std::string_view() const
(since 6.10) operator std::u8string_view() const
QUtf8StringView::storage_type operator[](qsizetype n) const

Miembros públicos estáticos

QUtf8StringView fromArray(const Char (&)[Size] string)
(since 6.8) qsizetype maxSize()

Descripción Detallada

Una QUtf8StringView hace referencia a una porción contigua de una cadena UTF-8 que no posee. Actúa como un tipo de interfaz para todos los tipos de cadena UTF-8, sin necesidad de construir primero un QString o QByteArray.

La cadena UTF-8 puede representarse como una matriz (o una estructura de datos compatible con matrices, como std::basic_string, etc.) de char8_t, char, signed char o unsigned char.

QUtf8StringView está diseñado como un tipo de interfaz; su principal caso de uso es como tipo de parámetro de función. Cuando se utilizan QUtf8StringViews como variables automáticas o miembros de datos, hay que tener cuidado para asegurarse de que los datos de cadena referenciados (por ejemplo, propiedad de un std::u8string) sobreviven al QUtf8StringView en todas las rutas de código, no sea que la vista de cadena acabe haciendo referencia a datos borrados.

Cuando se utiliza como un tipo de interfaz, QUtf8StringView permite que una única función acepte una amplia variedad de fuentes de datos de cadenas UTF-8. De este modo, una función que acepte QUtf8StringView sustituye a varias sobrecargas de funciones (por ejemplo, QByteArray), al tiempo que permite pasar a la función incluso más fuentes de datos de cadenas, como u8"Hello World", un literal de cadena char8_t (C++20) o char (C++17). La incompatibilidad de char8_t entre C++17 y C++20 desaparece al utilizar QUtf8StringView.

Como todas las vistas, QUtf8StringView debe pasarse por valor, no por referencia-a-const:

    void myfun1(QUtf8StringView sv);        // preferred
    void myfun2(const QUtf8StringView &sv); // compiles and works, but slower

Si desea dar a sus usuarios la máxima libertad en cuanto a las cadenas que pueden pasar a su función, considere el uso de QAnyStringView en su lugar.

QUtf8StringView también puede utilizarse como valor de retorno de una función. Si llama a una función que devuelve QUtf8StringView, tenga especial cuidado de no mantener el QUtf8StringView más tiempo del que la función promete para mantener vivos los datos de la cadena referenciada. En caso de duda, obtenga una referencia fuerte a los datos llamando a toString() para convertir el QUtf8StringView en un QString.

QUtf8StringView es un Tipo Literal.

Tipos de caracteres compatibles

QUtf8StringView acepta cadenas sobre una variedad de tipos de caracteres:

  • char (tanto con signo como sin signo)
  • char8_t (sólo C++20)

Tamaños y Subcadenas

Todos los tamaños y posiciones en las funciones QUtf8StringView están en puntos de código UTF-8 (es decir, las secuencias multibyte UTF-8 cuentan como dos, tres o cuatro, dependiendo de su longitud). QUtf8StringView no intenta detectar o prevenir el corte a través de secuencias multibyte UTF-8. Esto es similar a lo que ocurre con . Esto es similar a la situación con QStringView y los pares sustitutos.

C++20, char8_t y QUtf8StringView

En C++20, los literales de cadena u8"" cambiaron su tipo de const char[] a const char8_t[]. Si Qt 6 hubiera podido depender de C++20, QUtf8StringView almacenaría char8_t de forma nativa, y las siguientes funciones y alias usarían (punteros a) char8_t:

Esto es lo que QUtf8StringView se espera que parezca en Qt 7, pero para Qt 6, esto no era posible. En lugar de encerrar a los usuarios en una interfaz de la era C++17 para la próxima década, Qt proporciona dos clases QUtf8StringView, en diferentes espacios de nombres (en línea). La primera, en el espacio de nombres q_no_char8_t, tiene un value_type de const char y está disponible universalmente. La segunda, en el espacio de nombres q_has_char8_t, tiene un value_type de const char8_t y sólo está disponible cuando se compila en modo C++20.

q_no_char8_t es un espacio de nombres en línea independientemente de la edición de C++, para evitar incompatibilidades binarias accidentales. Para utilizar la versión char8_t, es necesario nombrarla explícitamente con q_has_char8_t::QUtf8StringView.

Internamente, ambas son instancias de la misma clase de plantilla, QBasicUtf8StringView. Por favor, no utilice el nombre de la clase de plantilla en su código fuente.

Vea también QAnyStringView, QStringView, QLatin1StringView, y QString.

Documentación de tipos de miembros

QUtf8StringView::const_iterator

Este typedef proporciona un iterador const de estilo STL para QUtf8StringView.

Véase también iterator y const_reverse_iterator.

QUtf8StringView::const_pointer

Alias para value_type *. Se proporciona por compatibilidad con la STL.

QUtf8StringView::const_reference

Alias para value_type &. Se proporciona por compatibilidad con la STL.

QUtf8StringView::const_reverse_iterator

Este tippedef proporciona un iterador inverso const al estilo STL para QUtf8StringView.

Véase también reverse_iterator y const_iterator.

QUtf8StringView::difference_type

Alias para std::ptrdiff_t. Se proporciona por compatibilidad con la STL.

QUtf8StringView::iterator

Este typedef proporciona un iterador const de estilo STL para QUtf8StringView.

QUtf8StringView no soporta iteradores mutables, por lo que es lo mismo que const_iterator.

Véase también const_iterator y reverse_iterator.

QUtf8StringView::pointer

Alias para value_type *. Se proporciona por compatibilidad con la STL.

QUtf8StringView no admite punteros mutables, por lo que es igual que const_pointer.

QUtf8StringView::reference

Alias para value_type &. Se proporciona por compatibilidad con la STL.

QUtf8StringView no admite referencias mutables, por lo que es igual que const_reference.

QUtf8StringView::reverse_iterator

Este typedef proporciona un iterador inverso const de estilo STL para QUtf8StringView.

QUtf8StringView no soporta iteradores inversos mutables, por lo que es lo mismo que const_reverse_iterator.

Véase también const_reverse_iterator y iterator.

QUtf8StringView::size_type

Alias para qsizetype. Se proporciona por compatibilidad con la STL.

[alias] QUtf8StringView::storage_type

Alias para char.

QUtf8StringView::value_type

Alias para const char. Se proporciona por compatibilidad con la STL.

Documentación de funciones miembro

[constexpr noexcept] QUtf8StringView::QUtf8StringView()

Construye una vista de cadena nula.

Véase también isNull().

[constexpr noexcept] template <typename Char, size_t N> QUtf8StringView::QUtf8StringView(const Char (&)[N] string)

Construye una vista de cadena sobre la cadena de caracteres literal string. La vista cubre el array hasta que se encuentra el primer Char(0), o N, lo que ocurra primero. Si necesita el array completo, utilice fromArray() en su lugar.

string debe permanecer válida durante el tiempo de vida de este objeto vista de cadena.

Restricciones

Participa en la resolución de sobrecargas sólo si string es un array real y si Char es un tipo de carácter compatible. Los tipos de caracteres compatibles son: char8_t, char, signed char y unsigned char.

Véase también fromArray().

[constexpr noexcept] template <typename Char> QUtf8StringView::QUtf8StringView(const Char *str)

Construye una vista de cadena en str. La longitud se determina buscando la primera Char(0).

str debe permanecer válida durante el tiempo de vida de este objeto string view.

Pasar nullptr como str es seguro y da como resultado una vista de cadena nula.

Restricciones

Participa en la resolución de sobrecargas sólo si str no es una matriz y si Char es un tipo de carácter compatible. Los tipos de caracteres compatibles son: char8_t, char, signed char y unsigned char.

[constexpr noexcept] template <typename Container, QUtf8StringView::if_compatible_container<Container> = true> QUtf8StringView::QUtf8StringView(const Container &str)

Construye una vista de cadena en str. La longitud se toma de std::size(str).

std::data(str) debe permanecer válida durante el tiempo de vida de este objeto string view.

La vista de cadena estará vacía si y sólo si std::size(str) == 0. No está especificado si este constructor puede dar como resultado una vista de cadena nula (std::data(str) tendría que devolver nullptr para ello).

Restricciones

Participa en la resolución de sobrecargas sólo si Container es un contenedor con un tipo de carácter compatible como value_type. Los tipos de caracteres compatibles son: char8_t, char, signed char y unsigned char.

Véase también isNull() y isEmpty().

[constexpr noexcept] QUtf8StringView::QUtf8StringView(std::nullptr_t)

Construye una vista de cadena nula.

Véase también isNull().

[constexpr] template <typename Char, QUtf8StringView::if_compatible_char<Char> = true> QUtf8StringView::QUtf8StringView(const Char *first, const Char *last)

Construye una vista de cadena en first con longitud (last - first).

El rango [first,last) debe permanecer válido durante el tiempo de vida de este objeto string view.

Pasar \nullptr como first es seguro si last es nullptr, también, y resulta en una vista de cadena nula.

El comportamiento es indefinido si last precede a first, o first es nullptr y last no lo es.

Restricciones

Participa en la resolución de sobrecargas sólo si Char es un tipo de carácter compatible. Los tipos de caracteres compatibles son: char8_t, char, signed char y unsigned char.

[constexpr] template <typename Char, QUtf8StringView::if_compatible_char<Char> = true> QUtf8StringView::QUtf8StringView(const Char *str, qsizetype len)

Construye una vista de cadena en str con la longitud len.

El rango [str,len) debe permanecer válido durante el tiempo de vida de este objeto string view.

Pasar nullptr como str es seguro si len también es 0, y da como resultado una vista de cadena nula.

El comportamiento es indefinido si len es negativo o, cuando es positivo, si str es nullptr.

Restricciones

Participa en la resolución de sobrecargas sólo si Char es un tipo de carácter compatible. Los tipos de caracteres compatibles son: char8_t, char, signed char y unsigned char.

[since 6.9] template <typename... Args> QString QUtf8StringView::arg(Args &&... args) const

Sustituye las apariciones de %N en esta cadena por el argumento correspondiente de args. Los argumentos no son posicionales: el primero de los args sustituye al %N por el N más bajo (todos ellos), el segundo de los args al %N por el N inmediatamente inferior, etc.

Args puede consistir en cualquier cosa que implícitamente se convierta a QAnyStringView.

Esta función se introdujo en Qt 6.9.

Véase también QString::arg(Args&&...).

[constexpr] QUtf8StringView::storage_type QUtf8StringView::at(qsizetype n) const

Devuelve el punto de código en la posición n en esta vista de cadena.

El comportamiento es indefinido si n es negativo o no menor que size().

Véase también operator[](), front() y back().

[constexpr] QUtf8StringView::storage_type QUtf8StringView::back() const

Devuelve el último punto de código en la vista de cadena. Igual que last().

Esta función se proporciona por compatibilidad con STL.

Advertencia: Llamar a esta función en una vista de cadena vacía constituye un comportamiento indefinido.

Véase también front().

[noexcept] QUtf8StringView::const_iterator QUtf8StringView::begin() const

Devuelve un iterador const de estilo STL que apunta al primer punto de código en la vista de cadena.

Esta función se proporciona por compatibilidad con STL.

Véase también end(), cbegin(), rbegin() y data().

[noexcept] QUtf8StringView::const_iterator QUtf8StringView::cbegin() const

Igual que begin().

Esta función se proporciona por compatibilidad con STL.

Véase también cend(), begin(), crbegin() y data().

[noexcept] QUtf8StringView::const_iterator QUtf8StringView::cend() const

Igual que end().

Esta función se proporciona por compatibilidad con STL.

Véase también cbegin(), end() y crend().

[constexpr] void QUtf8StringView::chop(qsizetype n)

Trunca esta vista de cadena en n puntos de código.

Igual que *this = first(size() - n).

Nota: El comportamiento es indefinido cuando n < 0 o n > size().

Véase también sliced(), first(), last(), chopped() y truncate().

[constexpr] QUtf8StringView QUtf8StringView::chopped(qsizetype n) const

Devuelve la subcadena de longitud size() - n que comienza al principio de este objeto.

Igual que first(size() - n).

Nota: El comportamiento es indefinido cuando n < 0 o n > size().

Véase también sliced(), first(), last(), chop(), truncate(), y slice().

[noexcept, since 6.5] int QUtf8StringView::compare(QLatin1StringView str, Qt::CaseSensitivity cs = Qt::CaseSensitive) const

[noexcept, since 6.5] int QUtf8StringView::compare(QUtf8StringView str, Qt::CaseSensitivity cs = Qt::CaseSensitive) const

[noexcept, since 6.5] int QUtf8StringView::compare(QStringView str, Qt::CaseSensitivity cs = Qt::CaseSensitive) const

Compara esta vista de cadena con str y devuelve un entero negativo si esta vista de cadena es menor que str, un entero positivo si es mayor que str, y cero si son iguales.

Si cs es Qt::CaseSensitive (por defecto), la comparación distingue entre mayúsculas y minúsculas; en caso contrario, la comparación no distingue entre mayúsculas y minúsculas.

Estas funciones se introdujeron en Qt 6.5.

[noexcept] QUtf8StringView::const_reverse_iterator QUtf8StringView::crbegin() const

Igual que rbegin().

Esta función se proporciona por compatibilidad con STL.

Véase también crend(), rbegin() y cbegin().

[noexcept] QUtf8StringView::const_reverse_iterator QUtf8StringView::crend() const

Igual que rend().

Esta función se proporciona por compatibilidad con STL.

Véase también crbegin(), rend() y cend().

[constexpr noexcept] QUtf8StringView::const_pointer QUtf8StringView::data() const

Devuelve un puntero constante al primer punto de código de la vista de cadena.

Nota: La matriz de caracteres representada por el valor devuelto no está terminada en cero.

Véase también begin(), end() y utf8().

[constexpr noexcept] bool QUtf8StringView::empty() const

Devuelve si esta vista de cadena está vacía, es decir, si size() == 0.

Esta función se proporciona por compatibilidad con STL.

Véase también isEmpty(), isNull(), size() y length().

[noexcept] QUtf8StringView::const_iterator QUtf8StringView::end() const

Devuelve un iterador constante de estilo STL que apunta al punto de código imaginario después del último punto de código de la lista.

Esta función se proporciona por compatibilidad con STL.

Véase también begin(), cend() y rend().

[constexpr] QUtf8StringView QUtf8StringView::first(qsizetype n) const

Devuelve una vista de cadena que contiene los primeros puntos de código n de esta vista de cadena.

Nota: El comportamiento es indefinido cuando n < 0 o n > size().

Véase también last(), sliced(), chopped(), chop(), truncate() y slice().

[static constexpr noexcept] template < typename Char, size_t Size, QUtf8StringView::if_compatible_char<Char> = true > QUtf8StringView QUtf8StringView::fromArray(const Char (&)[Size] string)

Construye una vista de cadena en la cadena de caracteres completa literal string, incluyendo cualquier final Char(0). Si no desea incluir el terminador nulo en la vista, puede eliminarlo en chop() cuando esté seguro de que se encuentra al final. Alternativamente, puede utilizar la sobrecarga del constructor tomando un literal de matriz que creará una vista hasta, pero sin incluir, el primer terminador nulo de los datos.

string debe permanecer válido durante el tiempo de vida de este objeto de vista de cadena.

Esta función funcionará con cualquier literal de matriz si Char es un tipo de carácter compatible. Los tipos de caracteres compatibles son: char8_t, char, signed char y unsigned char.

[constexpr] QUtf8StringView::storage_type QUtf8StringView::front() const

Devuelve el primer punto de código en la vista de cadena. Igual que first().

Esta función se proporciona por compatibilidad con STL.

Advertencia: Llamar a esta función en una vista de cadena vacía constituye un comportamiento indefinido.

Véase también back().

[constexpr noexcept] bool QUtf8StringView::isEmpty() const

Devuelve si esta vista de cadena está vacía, es decir, si size() == 0.

Esta función se proporciona por compatibilidad con otros contenedores Qt.

Véase también empty(), isNull(), size(), y length().

[constexpr noexcept] bool QUtf8StringView::isNull() const

Devuelve si esta vista de cadena es nula - es decir, si data() == nullptr.

Esta función se proporciona por compatibilidad con otros contenedores Qt.

Véase también empty(), isEmpty(), size(), y length().

[noexcept, since 6.3] bool QUtf8StringView::isValidUtf8() const

Devuelve true si esta cadena contiene datos codificados en UTF-8 válidos, o false en caso contrario.

Esta función se introdujo en Qt 6.3.

[constexpr] QUtf8StringView QUtf8StringView::last(qsizetype n) const

Devuelve una vista de cadena que contiene los últimos puntos de código n de esta vista de cadena.

Nota: El comportamiento es indefinido cuando n < 0 o n > size().

Véase también first(), sliced(), chopped(), chop(), truncate() y slice().

[constexpr noexcept] qsizetype QUtf8StringView::length() const

Igual que size().

Esta función se proporciona por compatibilidad con otros contenedores Qt.

Véase también empty(), isEmpty(), isNull() y size().

[static constexpr noexcept, since 6.8] qsizetype QUtf8StringView::maxSize()

Devuelve el número máximo de elementos que teóricamente puede representar la vista. En la práctica, el número puede ser mucho menor, limitado por la cantidad de memoria disponible en el sistema.

Esta función se introdujo en Qt 6.8.

[constexpr noexcept, since 6.8] qsizetype QUtf8StringView::max_size() const

Esta función se proporciona por compatibilidad con STL.

Devuelve maxSize().

Esta función se introdujo en Qt 6.8.

[noexcept] QUtf8StringView::const_reverse_iterator QUtf8StringView::rbegin() const

Devuelve un iterador inverso de estilo STL que apunta al primer punto de código en la vista de cadena, en orden inverso.

Esta función se proporciona por compatibilidad con STL.

Véase también rend(), crbegin() y begin().

[noexcept] QUtf8StringView::const_reverse_iterator QUtf8StringView::rend() const

Devuelve un iterador inverso estilo STL que apunta a uno pasado el último punto de código en la vista de cadena, en orden inverso.

Esta función se proporciona por compatibilidad con STL.

Véase también rbegin(), crend(), y end().

[constexpr noexcept] qsizetype QUtf8StringView::size() const

Devuelve el tamaño de esta vista de cadena, en puntos de código UTF-8 (es decir, las secuencias multibyte cuentan como más de una a efectos de esta función, igual que los pares sustitutos en QString y QStringView).

Véase también empty(), isEmpty(), isNull(), y length().

[constexpr, since 6.8] QUtf8StringView &QUtf8StringView::slice(qsizetype pos, qsizetype n)

Modifica esta vista de cadena para que comience en la posición pos, extendiéndose para los puntos de código n.

Nota: El comportamiento es indefinido cuando pos < 0, n < 0, o pos + n > size().

Esta función se introdujo en Qt 6.8.

Véase también sliced(), first(), last(), chopped(), chop(), y truncate().

[constexpr, since 6.8] QUtf8StringView &QUtf8StringView::slice(qsizetype pos)

Modifica esta vista de cadena para que comience en la posición pos, extendiéndose hasta su final.

Nota: El comportamiento es indefinido cuando pos < 0 o pos > size().

Esta es una función sobrecargada.

Esta función se introdujo en Qt 6.8.

Ver también sliced(), first(), last(), chopped(), chop(), y truncate().

[constexpr] QUtf8StringView QUtf8StringView::sliced(qsizetype pos) const

Devuelve una vista de cadena que comienza en la posición pos en este objeto, y se extiende hasta su final.

Nota: El comportamiento es indefinido cuando pos < 0 o pos > size().

Véase también first(), last(), chopped(), chop(), truncate(), y slice().

[constexpr] QUtf8StringView QUtf8StringView::sliced(qsizetype pos, qsizetype n) const

Devuelve una vista de cadena que contiene n puntos de código de esta vista de cadena, comenzando en la posición pos.

Nota: El comportamiento es indefinido cuando pos < 0, n < 0, o pos + n > size().

Véase también first(), last(), chopped(), chop(), truncate(), y slice().

QString QUtf8StringView::toString() const

Devuelve una copia profunda de los datos de esta vista de cadena como QString.

El valor devuelto será un null QString si y sólo si esta vista de cadena es null.

[constexpr] void QUtf8StringView::truncate(qsizetype n)

Trunca esta vista de cadena a n puntos de código.

Igual que *this = first(n).

Nota: El comportamiento es indefinido cuando n < 0 o n > size().

Véase también sliced(), first(), last(), chopped() y chop().

[noexcept] const char8_t *QUtf8StringView::utf8() const

Devuelve un puntero constante al primer punto de código de la vista de cadena.

El resultado se devuelve como const char8_t*, por lo que esta función sólo está disponible cuando se compila en modo C++20.

Nota: La matriz de caracteres representada por el valor devuelto no está terminada en cero.

Véase también begin(), end(), y data().

[noexcept, since 6.7] QUtf8StringView::operator std::string_view() const

Convierte este objeto QUtf8StringView en un objeto std::string_view. La vista devuelta tendrá el mismo puntero de datos y longitud que esta vista.

Esta función se introdujo en Qt 6.7.

[noexcept, since 6.10] QUtf8StringView::operator std::u8string_view() const

Convierte este objeto QUtf8StringView en un objeto std::u8string_view. La vista devuelta tendrá el mismo puntero de datos y longitud que esta vista.

Esta función sólo está disponible cuando se compila en modo C++20.

Esta función se introdujo en Qt 6.10.

[constexpr] QUtf8StringView::storage_type QUtf8StringView::operator[](qsizetype n) const

Devuelve el punto de código en la posición n en esta vista de cadena.

El comportamiento es indefinido si n es negativo o no menor que size().

Véase también at(), front() y back().

© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.