Namespaces
Variants

std:: locale

From cppreference.net
Défini dans l'en-tête <locale>
class locale ;

Un objet de la classe std::locale est un ensemble indexé immuable de facettes immuables. Chaque objet de flux de la bibliothèque d'entrée/sortie de C++ est associé à un std::locale et utilise ses facettes pour l'analyse et le formatage de toutes les données. De plus, un objet locale est associé à chaque std::basic_regex . (depuis C++11) Les objets locale peuvent également être utilisés comme prédicats effectuant la collation de chaînes avec les conteneurs et algorithmes standards, et peuvent être accédés directement pour obtenir ou modifier les facettes qu'ils contiennent.

Chaque paramètre régional construit dans un programme C++ contient au moins les facettes standard suivantes (c'est-à-dire que std::has_facet renvoie true pour tous ces types de facettes), mais un programme peut définir des spécialisations supplémentaires ou des facettes entièrement nouvelles et les ajouter à tout objet de paramètre régional existant.

**Note:** Le contenu fourni ne contient aucun texte traduisible en dehors des balises HTML et du code C++. Tous les éléments présents sont soit des balises HTML, des attributs, ou des termes spécifiques au C++ qui ne doivent pas être traduits selon vos instructions. La structure HTML et le code C++ ont donc été préservés intacts.
Facettes prises en charge
std:: ctype < char >
std:: ctype < wchar_t >
std:: codecvt < char , char , std:: mbstate_t >
std:: codecvt < wchar_t , char , std:: mbstate_t >
std:: num_get < char >
std:: num_get < wchar_t >
std:: numpunct < char >
std:: numpunct < wchar_t >
std:: num_put < char >
std:: num_put < wchar_t >
std:: money_get < char >
std:: money_get < wchar_t >
std:: moneypunct < char >
std:: moneypunct < char , true >
std:: moneypunct < wchar_t >
std:: moneypunct < wchar_t , true >
std:: money_put < char >
std:: money_put < wchar_t >
std:: time_get < char >
std:: time_get < wchar_t >
std:: collate < char >
std:: collate < wchar_t >
std:: time_put < char >
std:: time_put < wchar_t >
std:: messages < char >
std:: messages < wchar_t >
Facettes dépréciées
std:: codecvt < char16_t , char , std:: mbstate_t > (depuis C++11) (obsolète en C++20)
std:: codecvt < char32_t , char , std:: mbstate_t > (depuis C++11) (obsolète en C++20)
std:: codecvt < char16_t , char8_t, std:: mbstate_t > (depuis C++20) (obsolète)
std:: codecvt < char32_t , char8_t, std:: mbstate_t > (depuis C++20) (obsolète)

En interne, un objet locale est implémenté comme s'il s'agissait d'un pointeur à comptage de références vers un tableau (indexé par std::locale::id ) de pointeurs à comptage de références vers des facets : copier un locale ne copie qu'un seul pointeur et incrémente plusieurs compteurs de références. Pour maintenir les garanties de sécurité des threads de la bibliothèque standard C++ (les opérations sur différents objets sont toujours thread-safe), le compteur de références du locale et chaque compteur de références de facet sont mis à jour de manière thread-safe, similairement à std::shared_ptr .

Table des matières

Types membres

Type Description
le type d'index de facette : chaque classe de facette doit déclarer ou hériter d'un membre public statique de ce type
(classe)
la classe de base pour toutes les catégories de facettes : chaque facette de toute catégorie est dérivée de ce type
(classe)
category
int
(typedef)

Constantes membres

Nom Explication
const category none
[static]
une valeur zéro indiquant aucune catégorie de facette
(constante de membre public static)
const category collate
[static]
une valeur de masque de bits indiquant la catégorie de facette collate
(constante de membre public static)
const category ctype
[static]
une valeur de masque de bits indiquant la catégorie de facette ctype
(constante de membre public static)
const category monetary
[static]
une valeur de masque de bits indiquant la catégorie de facette monetary
(constante de membre public static)
const category numeric
[static]
une valeur de masque de bits indiquant la catégorie de facette numeric
(constante de membre public static)
const category time
[static]
une valeur de masque de bits indiquant la catégorie de facette time
(constante de membre public static)
const category messages
[static]
une valeur de masque de bits indiquant la catégorie de facette messages
(constante de membre public static)
const category all
[static]
collate | ctype | monetary | numeric | time | messages
(constante de membre public static)

std::locale les fonctions membres attendant un argument category nécessitent l'une des valeurs de catégorie définies ci-dessus, ou l'union de deux ou plusieurs de ces valeurs. Les LC constantes ne sont pas acceptées.

Fonctions membres

construit un nouveau locale
(fonction membre publique)
détruit le locale et les facettes dont le compteur de référence devient zéro
(fonction membre publique)
remplace un locale
(fonction membre publique)
construit un locale avec une facette identifiée à la compilation copiée depuis un autre locale
(fonction membre publique)
retourne le nom du locale ou "*" s'il n'est pas nommé
(fonction membre publique)
(C++26)
retourne le schéma d'encodage des caractères associé au locale
(fonction membre publique)
(supprimé en C++20)
comparaison d'égalité entre objets locale
(fonction membre publique)
compare lexicographiquement deux chaînes en utilisant la facette collate de ce locale
(fonction membre publique)
[static]
modifie le locale global
(fonction membre publique statique)
[static]
obtient une référence au locale "C"
(fonction membre publique statique)

Exemple

Démontre le prologue typique d'un programme sensible aux paramètres régionaux (multiplateforme).

#include <iostream>
#include <locale>
int main()
{
    std::wcout << L"User-preferred locale setting is "
               << std::locale("").name().c_str() << L'\n';
    // on startup, the global locale is the "C" locale
    std::wcout << 1000.01 << L'\n';
    // replace the C++ global locale and the "C" locale with the user-preferred locale
    std::locale::global(std::locale(""));
    // use the new global locale for future wide character output
    std::wcout.imbue(std::locale());
    // output the same number again
    std::wcout << 1000.01 << L'\n';
}

Sortie possible :

User-preferred locale setting is en_US.UTF8
1000.01
1,000.01

Rapports de défauts

Les rapports de défauts modifiant le comportement suivants ont été appliqués rétroactivement aux normes C++ précédemment publiées.

DR Applicable à Comportement publié Comportement corrigé
LWG 340 C++98 l'ensemble des facettes standard que toutes les locales doivent contenir était incertain clarifié
LWG 347 C++98 les paramètres de type category pouvaient accepter les constantes LC n'est plus accepté

Voir aussi

décrit une interface pour accéder au registre des jeux de caractères IANA
(classe)
obtient une facette d'une locale
(modèle de fonction)
vérifie si une locale implémente une facette spécifique
(modèle de fonction)
définit la locale
(fonction membre publique de std::ios_base )
retourne la locale actuelle
(fonction membre publique de std::ios_base )