LOCALECONV |
Convention local |
---|---|
Langage C++ | clocale (locale.h) |
Syntaxe
struct lconv *localeconv(void); |
Description
Cette fonction permet de demander les informations de format numérique du poste de travail local.
Remarques
- La fonction localeconv() renvoie un pointeur sur une structure de type lconv, contenant diverses informations environnementales géopolitiques relatives à la façon dont les nombres sont formatés.
- La fonction localeconv() renvoie un pointeur sur la structure lconv. Vous ne devez pas modifier le contenu de cette structure. Ces informations sont spécifiques à la marque du compilateur, vous devrez donc vérifier les informations spécifiques à la mise en oeuvre concernant la structure lconv.
- Définition et utilité : La fonction localeconv fait partie de la bibliothèque <locale> en C++ et permet d'obtenir des informations liées à la locale actuelle du programme. Elle retourne un pointeur vers une structure lconv, contenant des informations sur la façon dont les nombres, les devises, et les paramètres de mise en forme sont gérés en fonction de la locale en vigueur. Cette fonction est particulièrement utile dans les applications internationales où l'affichage des nombres et des monnaies doit être adapté à la culture locale de l'utilisateur.
- Champs de la structure lconv : La structure lconv contient plusieurs champs utiles pour gérer la présentation des valeurs numériques et monétaires en fonction de la locale :
- Prise en charge des locales personnalisées : localeconv permet de récupérer les paramètres de la locale courante, mais la locale elle-même peut être modifiée avec la fonction setlocale pour s'adapter à différentes régions ou langues. Par exemple, vous pouvez changer la locale en utilisant setlocale pour adapter le format des nombres et des devises à un pays spécifique :
- setlocale(LC_NUMERIC, "fr_FR");
- struct lconv* loc = localeconv();
- std::cout << "Séparateur décimal : " << loc->decimal_point << std::endl;
- Relation avec setlocale : Bien que localeconv donne des informations sur la locale courante, setlocale est utilisé pour modifier la locale. Ces deux fonctions sont souvent utilisées ensemble dans les programmes devant s'adapter à différents formats régionaux. Par exemple, vous pourriez vouloir changer la locale en fonction de la langue de l'utilisateur et ensuite utiliser localeconv pour formater les nombres ou les devises selon la nouvelle locale.
- Utilisation pour la gestion des devises : localeconv est particulièrement utile pour formater les valeurs monétaires selon la locale de l'utilisateur. Par exemple, si vous avez une application qui affiche des prix ou des montants en fonction de la devise locale, localeconv peut être utilisée pour obtenir le symbole monétaire et les séparateurs nécessaires à un affichage correct :
- struct lconv* loc = localeconv();
- std::cout << "Le prix est : " << loc->currency_symbol << " 1000" << std::endl;
- Impact de la locale sur le comportement de la fonction : Il est important de noter que la fonction localeconv retourne des résultats dépendant entièrement de la locale courante. Si la locale n'a pas été définie ou si elle est mal configurée, la fonction pourrait renvoyer des résultats inattendus ou utiliser une locale par défaut, généralement la locale "C" ayant des conventions très simples. Il est donc essentiel de s'assurer que la locale est correctement configurée avant d'utiliser cette fonction pour obtenir des résultats pertinents.
Champ | Description |
---|---|
decimal_point | Utilisé pour obtenir le caractère utilisé pour le séparateur décimal. Par exemple, en France, il sera un point ("."), tandis qu'aux États-Unis, ce sera également un point, mais dans d'autres locales, ce pourrait être une virgule (","). |
thousands_sep | Sert à obtenir le séparateur des milliers, par exemple, une virgule ou un espace. |
currency_symbol | Le symbole monétaire, comme "€" pour l'Euro ou "$" pour le dollar. |
Ces champs peuvent être utilisés pour afficher ou traiter des nombres et des monnaies de manière cohérente avec la culture locale.
En changeant la locale à "fr_FR", le séparateur décimal devient une virgule (","), selon la convention française.
Cela afficherait quelque chose comme "Le prix est : 1000€" si la locale est définie en France.
Exemple
Voici un exemple d'utilisation de localeconv pour récupérer et afficher des informations sur la locale actuelle :
- #include <iostream>
- #include <locale>
-
- int main() {
- struct lconv* loc = localeconv();
- std::cout << "Séparateur décimal : " << loc->decimal_point << std::endl;
- std::cout << "Séparateur de milliers : " << loc->thousands_sep << std::endl;
- std::cout << "Symbole de la monnaie : " << loc->currency_symbol << std::endl;
- return 0;
- }
Si la locale est configurée en français en France, l'exemple pourrait afficher :
Séparateur décimal : .Séparateur de milliers : ,
Symbole de la monnaie : €
Cela permet à l'application d'adapter son formatage à la locale de l'utilisateur.
Dernière mise à jour : Vendredi, le 1er mai 2020