Namespaces
Variants

Strings library

From cppreference.net

Contenidos

Personajes

En la biblioteca estándar de C++, un carácter es un objeto que, cuando se trata secuencialmente, puede representar texto.

El término significa no solo objetos de character types , sino también cualquier valor que pueda ser representado por un tipo que proporcione las definiciones especificadas en la biblioteca de cadenas y las siguientes bibliotecas:

(desde C++11)

En la biblioteca de cadenas y biblioteca de expresiones regulares (desde C++11) , un carácter solo puede ser de tipos similares a char , es decir, aquellos tipos no array que satisfacen los requisitos de PODType (hasta C++20) TrivialType y StandardLayoutType (desde C++20) (hasta C++26) TriviallyCopyable y StandardLayoutType (desde C++26) .

Para cualquier tipo char-like T , std:: is_trivially_default_constructible_v < T > es true .

(since C++26)

Por lo tanto, los caracteres también se denominan objetos tipo char en la biblioteca de cadenas y la biblioteca de expresiones regulares (desde C++11) .

Algunos componentes de la biblioteca estándar aceptan tipos contenedores de caracteres . Estos también son tipos utilizados para representar caracteres individuales. Dichos tipos se utilizan para uno de los argumentos de plantilla de std::char_traits y las plantillas de clase que utilizan std::char_traits .

Componentes de la biblioteca

La biblioteca de cadenas de C++ incluye los siguientes componentes:

Rasgos de caracteres

Muchas plantillas de clase relacionadas con caracteres (como std::basic_string ) necesitan un conjunto de tipos y funciones relacionados para completar la definición de su semántica. Estos tipos y funciones se proporcionan como un conjunto de typedef nombres y funciones miembro en el parámetro de plantilla Traits utilizado por cada una de estas plantillas. Las clases que pueden completar esa semántica son los CharTraits .

La biblioteca de cadenas proporciona la plantilla de clase std::char_traits que define tipos y funciones para std::basic_string y std::basic_string_view (desde C++17) .

Se definen las siguientes especializaciones, todas ellas satisfacen los CharTraits requisitos:

Definido en el encabezado <string>
template <> class char_traits < char > ;
template <> class char_traits < wchar_t > ;
template <> class char_traits < char8_t > ;
(desde C++20)
template <> class char_traits < char16_t > ;
(desde C++11)
template <> class char_traits < char32_t > ;
(desde C++11)

Cuando se utiliza un tipo de contenedor de caracteres definido por el usuario para std::basic_string y std::basic_string_view (since C++17) , también es necesario proporcionar una clase de rasgos de caracteres correspondiente (que puede ser una especialización de std::char_traits ).

Clases de cadena ( std::string etc.)

La plantilla de clase std::basic_string generaliza cómo se manipulan y almacenan las secuencias de caracteres. La creación, manipulación y destrucción de cadenas son manejadas por un conjunto conveniente de métodos de clase y funciones relacionadas.

Se proporcionan varias especializaciones de std::basic_string para tipos de uso común:

Definido en el encabezado <string>
Tipo Definición
std::string std:: basic_string < char >
std::wstring std:: basic_string < wchar_t >
std::u8string (desde C++20) std:: basic_string < char8_t >
std::u16string (desde C++11) std:: basic_string < char16_t >
std::u32string (desde C++11) std:: basic_string < char32_t >

Clases de vista de cadena ( std::string_view etc.) (desde C++17)

La plantilla de clase std::basic_string_view proporciona un objeto ligero que ofrece acceso de solo lectura a una cadena o a una parte de una cadena utilizando una interfaz similar a la interfaz de std::basic_string .

Se proporcionan varias especializaciones de std::basic_string_view para tipos de uso común:

Definido en el 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 (desde C++20) std:: basic_string_view < char8_t >
std::u16string_view std:: basic_string_view < char16_t >
std::u32string_view std:: basic_string_view < char32_t >

Bibliotecas relevantes

La biblioteca de procesamiento de texto proporciona soporte para localizaciones, conversiones de cadenas (por ejemplo, std::toupper ), funciones de clasificación de caracteres (por ejemplo, std::isspace ), y reconocimiento de codificación de texto ( std::text_encoding ).

Informes de defectos

Los siguientes informes de defectos que modifican el comportamiento se aplicaron retroactivamente a los estándares publicados anteriormente de C++.

DR Aplicado a Comportamiento publicado Comportamiento correcto
LWG 1170 C++98 los tipos char-like podían ser tipos array prohibido

Véase también

Documentación de C para Biblioteca de cadenas