Biblioteca de cadenas
Contenido |
[editar]Caracteres
En la biblioteca estándar de C++, un carácter es un objeto que, cuando se trata de forma secuencial, puede representar texto.
El término no solo se refiere a objetos de tipos carácter, sino también a cualquier valor que pueda representarse mediante 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 la 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 similar a char | (desde C++26) |
Por lo tanto, los caracteres también se conocen como objetos similares a char en la biblioteca de cadenas y la biblioteca de expresiones regulares(desde C++11).
Algunos componentes de la biblioteca estándar aceptan tipos contenedor de caracteres. Estos también son tipos que se utilizan 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.
[editar]Componentes de la biblioteca
La biblioteca de cadenas de C++ incluye los siguientes componentes:
[editar]Rasgos de carácter
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 nombres typedef y funciones miembro en el parámetro de plantilla Traits
utilizado por cada una de esas plantillas. Las clases que pueden completar esa semántica son 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 requisitos de CharTraits:
Definido en el archivo de 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 contenedor de caracteres definido por el usuario para std::basic_string y std::basic_string_view(desde C++17), también es necesario proporcionar una clase de rasgos de carácter correspondiente (que puede ser una especialización de std::char_traits).
[editar]Clases 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 se gestionan mediante un conjunto conveniente de métodos de clase y funciones relacionadas.
Se proporcionan varias especializaciones de std::basic_string para los tipos de uso común:
Definido en el archivo de 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 vista sobre cadena (std::string_view etc.)La plantilla de clase std::basic_string_view proporciona un objeto liviano que ofrece acceso de solo lectura a una cadena o parte de una cadena mediante una interfaz similar a la interfaz de std::basic_string. Se proporcionan varias especializaciones de std::basic_string_view para los tipos de uso común:
| (desde C++17) |
[editar]Servicios para secuencias terminadas en nulo
Las secuencias de caracteres terminadas en nulo (NTCTS por sus siglas en inglés) son secuencias de caracteres que son terminadas por el carácter nulo (el valor después de la inicialización por valor).
La biblioteca de cadenas proporciona funciones para crear, inspeccionar y modificar dichas secuencias:
- las funciones auxiliares para las cadenas de bytes terminadas en nulo (NTBS por sus siglas en inglés) (incluyendo apoyo para los tipos carácter anchos),
- las funciones auxiliares para las cadenas de multibytes terminadas en nulo (NTMBS por sus siglas en inglés).
[editar]Bibliotecas relevantes
La biblioteca de localización proporciona apoyo para 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).
[editar]Informes de defectos
Los siguientes informes de defectos de cambio de comportamiento se aplicaron de manera retroactiva a los estándares de C++ publicados anteriormente.
ID | Aplicado a | Comportamiento según lo publicado | Comportamiento correcto |
---|---|---|---|
LWG 1170 | C++98 | Los tipos similares a char podrían ser tipos array. | Se prohibió. |
[editar]Véase también
Documentación de C para Strings library |