Namespaces
Variants

std::text_encoding:: literal

From cppreference.net
static consteval text_encoding literal ( ) noexcept ;
(depuis C++26)

Construit un nouvel objet text_encoding représentant l'encodage des littéraux de caractères ordinaires . Il est utilisé pour déterminer l'encodage de caractères appliqué aux littéraux de caractères ou de chaînes ordinaires (par exemple "This is literal" ).

Cette fonction est supprimée sauf si CHAR_BIT est 8 .

Table des matières

Paramètres

(aucun)

Valeur de retour

L'objet contenant la représentation de l'encodage littéral ordinaire.

Notes

Cette fonction peut être implémentée en construisant text_encoding avec des macros intégrées spécifiques au compilateur telles que __clang_literal_encoding__ de Clang, ou __GNUC_EXECUTION_CHARSET_NAME de GCC. Ces macros, qui sont connues au moment de la compilation, se développent en un littéral de chaîne étroit contenant le nom du jeu de caractères d'exécution étroit utilisé (encodage de littéral ordinaire).

La valeur renvoyée par literal ( ) peut dépendre des options du compilateur telles que -fexec-charset= encoding-name dans GCC ou Clang ou /execution-charset: encoding-name dans MSVC.

Exemple

Cet exemple démontre l'assertion que l'encodage littéral ordinaire devrait être UTF-8.

#include <text_encoding>
static_assert(std::text_encoding::literal() == std::text_encoding::UTF8);
int main()
{
    // si l'encodage littéral est UTF-8, alors ce littéral de chaîne sans préfixe est
    // encodé en UTF-8
    constexpr char green_heart[] = "\N{GREEN HEART}";
    // ce littéral de chaîne préfixé est toujours encodé en UTF-8 indépendamment de
    // l'encodage littéral
    constexpr char8_t green_heart_u8[] = u8"\N{GREEN HEART}";
}