Accès rapide :
Présentation de l'entête <locale.h>
Exemple d'utilisation
Eléments fournis par la librairie <locale.h>
Note de portabilité
L'entête <locale.h>, ou <clocale> en C++, permet de manipuler la localisation
courante d'un programme C. Cette localisation influence notamment le classement des chaînes, les conversions
de caractères, le séparateur décimal, la mise en forme monétaire et certains formats de date.
Par défaut, un programme C démarre dans la localisation "C". Pour utiliser la localisation de
l'utilisateur, on appelle souvent setlocale( LC_ALL, "" ) au début du programme.
Pour utiliser les fonctions et les macros de cette librairie, il suffit d'inclure l'entête suivant.
#include <locale.h> // <clocale> en C++
L'exemple suivant active la localisation de l'environnement puis consulte quelques informations numériques.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
#include <locale.h> #include <stdio.h> #include <stdlib.h> int main() { const char * localeName = setlocale( LC_ALL, "" ); struct lconv * infos = localeconv(); printf( "locale == %s\n", localeName != NULL ? localeName : "indisponible" ); printf( "decimal_point == %s\n", infos->decimal_point ); printf( "thousands_sep == %s\n", infos->thousands_sep ); return EXIT_SUCCESS; } |
| Nom | Type | Description | Depuis |
|---|---|---|---|
| LC_ALL, LC_COLLATE, LC_CTYPE... | Macros | Catégories utilisables avec setlocale et newlocale. |
C89 / POSIX |
| NULL | Macro | Constante de pointeur nul, aussi exposée par <locale.h>. |
C89 |
| struct lconv | Structure | Informations de formatage numérique et monétaire de la localisation courante. | C89 |
| localeconv | Fonction | Retourne un pointeur vers une structure lconv. |
C89 |
| setlocale | Fonction | Change ou interroge la localisation globale du programme. | C89 |
| locale_t | Type | Type opaque représentant un objet de localisation POSIX. | POSIX |
| newlocale, duplocale, freelocale | Fonctions | Création, duplication et libération d'objets de localisation POSIX. | POSIX |
| uselocale, getlocalename_l | Fonctions | Gestion de la localisation du thread courant et consultation du nom d'une localisation. | POSIX |
Les fonctions POSIX basées sur locale_t sont très pratiques dans du code multi-thread, car elles
évitent de modifier la localisation globale avec setlocale. Elles ne font cependant pas partie du C ISO.
Sur du code strictement portable C ISO, on se limite donc à setlocale, localeconv et
struct lconv.
Améliorations / Corrections
Vous avez des améliorations (ou des corrections) à proposer pour ce document : je vous remerçie par avance de m'en faire part, cela m'aide à améliorer le site.
Emplacement :
Description des améliorations :