Espacios de nombres
Variantes
Acciones

std::text_encoding::literal

De cppreference.com
< cpp‎ | text‎ | text encoding
 
 
 
 
static consteval text_encoding literal()noexcept;
(desde C++26)

Construye un nuevo text_encoding que representa la codificación literal de caracteres ordinarios. Se utiliza para determinar la codificación de caracteres aplicada a caracteres ordinarios o literales de cadena. (p. ej., "Esto es literal").

Esta función se marca como eliminada (= delete) a menos que CHAR_BIT sea 8.

Contenido

[editar]Parámetros

(Ninguno)

[editar]Valor de retorno

El objeto que contiene la representación de la codificación de literal ordinario.

[editar]Notas

Esta función se puede implementar construyendo text_encoding con macros integradas específicas del compilador como __clang_literal_encoding__ de Clang, o __GNUC_EXECUTION_CHARSET_NAME de GCC. Estas macros, que se conocen en tiempo de compilación, se expanden a un literal de cadena estrecho que contiene el nombre del juego de caracteres de ejecución estrecho usado (la codificación de literal ordinario).

El valor devuelto por literal() puede depender de las opciones del compilador, tales como -fexec-charset=encoding-name en GCC o Clang, o /execution-charset:encoding-name en MSVC.

[editar]Ejemplo

Este ejemplo demuestra la afirmación de que la codificación del literal ordinario debe ser UTF-8.

#include <text_encoding>   static_assert(std::text_encoding::literal()== std::text_encoding::UTF8);   int main(){// Si el literal de codificación es UTF-8, entonces este literal de cadena// sin prefijo se codifica como UTF-8constexprchar green_heart[]="\N{CORAZÓN VERDE}";   // este literal de cadena con prefijo siempre se codifica como UTF-8// independientemente del literal de codificaciónconstexpr char8_t green_heart_u8[]= u8"\N{CORAZÓN VERDE}";}


close