std:: locale
|
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.
| 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
|
(C++26)
|
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
)
|