Espacios de nombres
Variantes
Acciones

std::text_encoding

De cppreference.com
< cpp‎ | text
 
 
 
 
Definido en el archivo de encabezado <text_encoding>
struct text_encoding;
(desde C++26)

La clase text_encoding proporciona un mecanismo para identificar codificaciones de caracteres. Se utiliza para determinar la codificación de literal de carácter ordinario y la codificación de caracteres del entorno actual.

Cada objeto text_encoding encapsula un esquema de codificación de caracteres, identificado de forma única por un enumerador en text_encoding::id y un nombre correspondiente representado por una cadena terminada en nulo. Se puede acceder a ellos a través de las funciones miembro mib() y name(), respectivamente. La determinación de si un objeto representa un esquema de codificación de caracteres implementado en el entorno de traducción o ejecución está definida por la implementación.

La clase text_encoding es un tipo TriviallyCopyable. Garantiza que su valor se asigna como parte del almacenamiento de objetos. No se realiza ninguna asignación de memoria dinámica. El nombre almacenado está limitado a un máximo de max_name_length caracteres excluyendo el carácter nulo '\0'.

La clase admite codificaciones de caracteres tanto registradas como no registradas. Las codificaciones registradas son aquellas que se encuentran en el Registro de Juegos de Caracteres IANA excluyendo las siguientes codificaciones de caracteres:

  • NATS-DANO (33)
  • NATS-DANO-ADD (34).

Las codificaciones no registradas se pueden representar con un enumerador id::other o id::unknown y un nombre personalizado.

Para codificaciones de caracteres registradas, la clase proporciona acceso a:

  1. Nombre primario: El nombre oficial especificado en el registro.
  2. Alias: un superconjunto de alias del registro definido por la implementación.
  3. Valor MIBenum: un identificador único que se utiliza para identificar codificaciones de caracteres codificados.

Contenido

[editar]Tipos miembro

Representa el valor MIBenum de la codificación de caracteres.
(miembro público enum)[editar]
Una vista (view) sobre los alias de la codificación de caracteres.
(clase miembro pública)[editar]

[editar]Constante miembro

Nombre Valor
constexprstd::size_t max_name_length
[estático]
63
(constante miembro pública estática)

[editar]Objetos miembro

Nombre de miembro Definición
mib_(private) Un valor MIBenum de tipo text_encoding::id con id::unknown como el valor por defecto.
(objeto miembro solo de exposición*)
name_(private) Un valor almacenado de tipo char[max_name_length +1].
(objeto miembro solo de exposición*)

[editar]Funciones miembro

Creación
Construye un nuevo objeto text_encoding.
(función miembro pública)[editar]
[estático]
Construye un nuevo objeto text_encoding que representa la codificación literal de caracteres ordinarios.
(función miembro estática pública)[editar]
[estático]
Construye un nuevo text_encoding que representa el esquema de codificación de caracteres definido por la implementación del entorno de ejecución.
(función miembro estática pública)[editar]
Observadores
Devuelve el valor MIBenum de la codificación de caracteres actual.
(función miembro pública)[editar]
Devuelve el nombre primario de la codificación de caracteres actual.
(función miembro pública)[editar]
Devuelve una vista (view) sobre los alias de la codificación de caracteres actual.
(función miembro pública)[editar]
[estático]
Comprueba el esquema de codificación de caracteres del entorno de ejecución con el valor MIB especificado.
(función miembro estática pública)[editar]
Auxiliares
[estático](private)
Compara dos nombres de alias usando Charset Alias Matching
(función miembro estática solo de exposición*)[editar]

[editar]Funciones no miembro

Compara dos objetos text_encoding.
(función miembro pública)[editar]

[editar]Clases auxiliares

Apoyo hash para std::text_encoding
(especialización de plantilla de clase)[editar]

[editar]Notas

Cuando se trabaja con codificaciones de caracteres, es importante tener en cuenta que los nombres primarios o alias de dos codificaciones de caracteres registradas distintas no son equivalentes cuando se comparan usando Coincidencia de alias de juegos de caracteres según lo descrito por la norma técnica Unicode.

Por conveniencia, los enumeradores de text_encoding::id se presentan como miembros de text_encoding y se puede acceder a ellos directamente. Esto significa que text_encoding::ASCII y text_encoding::id::ASCII se refieren a la misma entidad.

Se recomienda que la implementación trate las codificaciones registradas como no intercambiables. Además, el nombre principal de una codificación registrada no debe usarse para describir una codificación no registrada similar pero diferente, a menos que exista un precedente claro para hacerlo.


Macro de Prueba de característicaValorEstándarComentario
__cpp_lib_text_encoding202306L(C++26)std::text_encoding

[editar]Ejemplo

#include <locale>#include <print>#include <text_encoding>   int main(){// la codificación de un literal se conoce en tiempo de compilaciónconstexpr std::text_encoding literal_encoding = std::text_encoding::literal();   // comprobar por codificación de un literal static_assert(literal_encoding.mib()!= std::text_encoding::other&& literal_encoding.mib()!= std::text_encoding::unknown);   // el entorno de codificación se conoce solo en tiempo de ejecución std::text_encoding env_encoding = std::text_encoding::environment();   // la codificación asociada de la configuración regional por defecto std::text_encoding locale_encoding =std::locale("").encoding();   std::println("La codificación de literal es {}", literal_encoding.name());std::println("Los alias de la codificación de literal:");for(constchar* alias_name : literal_encoding.aliases())std::println(" + {}", alias_name);   if(env_encoding == locale_encoding)std::println("En este caso, las codificaciones de entorno y configuración regional son las mismas.");   std::println("el entorno de codificación es {}", env_encoding.name());std::println("Los alias del entorno de codificación:");for(constchar* alias_name : env_encoding.aliases())std::println(" + {}", alias_name);}

Salida:

La codificación de literal es UTF-8 Los alias de la codificación de literal: + UTF-8 + csUTF8 En este caso, las codificaciones de entorno y configuración regional son las mismas. el entorno de codificación es ANSI_X3.4-1968 Los alias del entorno de codificación: + US-ASCII + iso-ir-6 + ANSI_X3.4-1968 + ANSI_X3.4-1986 + ISO_646.irv:1991 + ISO646-US + us + IBM367 + cp367 + csASCII + ASCII

[editar]Véase también

Conjunto de facetas polimórficas que encapsulan las diferencias culturales.
(clase)[editar]
close