Espacios de nombres
Variantes
Acciones

std::basic_string_view

De cppreference.com
< cpp‎ | string
 
 
 
 
Definido en el archivo de encabezado <string_view>
template<

    typename CharT,
    typename Traits = std::char_traits<CharT>

> class basic_string_view;
(desde C++17)

La plantilla de clase basic_string_view describe una vista sobre cadena: un objeto que puede referirse a una secuencia constante y contigua de objetos como char con el primer elemento de la secuencia en la posición cero.

Una implementación típica mantiene solamente dos miembros: un puntero a un CharT constante y un tamaño.

Se proveen varias definiciones de tipo para tipos carácter comunes:

Definido en el archivo de encabezado <string_view>
Tipo Definición
std::string_view std::basic_string_view<char>
std::wstring_view std::basic_string_view<wchar_t>
std::u8string_view std::basic_string_view<char8_t> (C++20)
std::u16string_view std::basic_string_view<char16_t>
std::u32string_view std::basic_string_view<char32_t>

Contenido

[editar] Parámetros de plantilla

CharT - Tipo carácter
Traits - CharTraits La clase que especifica las operaciones sobre el tipo carácter. Al igual que basic_string, Traits::char_type tiene que nombrar al mismo tipo que CharT o de lo contrario el programa está mal formado.

[editar] Tipos miembro

Tipo miembro Definición
traits_type Traits
value_type CharT
pointer CharT*
const_pointer const CharT*
reference CharT&
const_reference const CharT&
const_iterator RandomAccessIterator constante definido por la implementación , ConstexprIterator (desde C++20) y ContiguousIterator cuyo value_type es CharT
iterator const_iterator
const_reverse_iterator std::reverse_iterator<const_iterator>
reverse_iterator const_reverse_iterator
size_type std::size_t
difference_type std::ptrdiff_t

Nota: iterator y const_iterator son del mismo tipo porque las vistas sobre cadenas son vistas sobre una secuencia de caracteres.

Todos los requerimientos para los tipos iterador de un Container también se aplican los tipos iterator y const_iterator de la vista sobre cadena.

[editar] Funciones miembro

Construye una vista sobre cadena (basic_string_view).
(función miembro pública) [editar]
Asigna una vista.
(función miembro pública) [editar]
Iteradores
Devuelve un iterador al inicio.
(función miembro pública) [editar]
Devuelve un iterador al final.
(función miembro pública) [editar]
Devuelve un iterador inverso al principio.
(función miembro pública) [editar]
Devuelve un iterador inverso al final.
(función miembro pública) [editar]
Acceso a elementos
Accede al carácter especificado.
(función miembro pública) [editar]
Accede al carácter especificado con comprobación de límites.
(función miembro pública) [editar]
Accede al primer carácter.
(función miembro pública) [editar]
Accede al último carácter.
(función miembro pública) [editar]
Devuelve un puntero al primer carácter de una vista.
(función miembro pública) [editar]
Capacidad
Devuelve el número de caracteres.
(función miembro pública) [editar]
Devuelve el número máximo de caracteres.
(función miembro pública) [editar]
Comprueba si la vista está vacía
(función miembro pública) [editar]
Modificadores
Encoge la vista moviendo su inicio hacia adelante.
(función miembro pública) [editar]
Encoge la vista moviendo su final hacia atrás.
(función miembro pública) [editar]
Intercambia el contenido.
(función miembro pública) [editar]
Operaciones
Copia caracteres.
(función miembro pública) [editar]
Devuelve una subcadena.
(función miembro pública) [editar]
Compara dos vistas.
(función miembro pública) [editar]
Comprueba si la vista sobre cadena comienza con un prefijo dado.
(función miembro pública) [editar]
(C++20)
Comprueba si la vista sobre cadena termina con un sufijo dado.
(función miembro pública) [editar]
Encuentra caracteres en la vista.
(función miembro pública) [editar]
Encuentra la última ocurrencia de una subcadena.
(función miembro pública) [editar]
Encuentra la primer ocurrencia de caracteres.
(función miembro pública) [editar]
Encuentra la última ocurrencia de caracteres.
(función miembro pública) [editar]
Encuentra la primer ausencia de caracteres.
(función miembro pública) [editar]
Encuentra la última ausencia de caracteres.
(función miembro pública) [editar]

Constantes

[estático]
Valor especial. El significado exacto depende del contexto.
(constante miembro pública estática) [editar]

[editar] Funciones no-miembro

(eliminado en C++20)(eliminado en C++20)(eliminado en C++20)(eliminado en C++20)(eliminado en C++20)(C++20)
Compara dos vistas sobre cadena lexicográficamente.
(plantilla de función) [editar]
Entrada/salida
Realiza salida de flujo en vistas sobre cadena.
(plantilla de función) [editar]

[editar] Literales

Definido en el espacio de nombres std::literals::string_view_literals
Crea una vista sobre cadena a partir de un literal de array de caracteres.
(función) [editar]

[editar] Clases auxiliares

Apoyo de generación de dispersión para vistas sobre cadena
(especialización de plantilla de clase) [editar]

[editar] Plantilla auxiliar

template<typename CharT, typename Traits>
inline constexpr bool ranges::enable_borrowed_range<std::basic_string_view<CharT, Traits>> = true;
(desde C++20)

Esta especialización de std::ranges::enable_borrowed_range hace que basic_string_view satisfaga a borrowed_range.

template< typename CharT, typename Traits>
inline constexpr bool ranges::enable_view<std::basic_string_view<CharT, Traits>> = true;
(desde C++20)

Esta especialización de std::ranges::enable_view hace que basic_string_view satisfaga a view.

[editar] Guías de deducción(desde C++20)

[editar] Notas

Es la responsabilidad del programador asegurarse que la vista sobre cadena no tenga una duración más allá que la del array de caracteres a los que apunta:

std::string_view buena("un literal de cadena");   // de acuerdo: vista de cadena "buena"  
                                                  // apunta a un array estático
std::string_view mala("una cadena temporal"s);    // "mala" mantiene un puntero pendiente