Participer au site avec un Tip
Rechercher
 

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 :

Vous êtes un professionnel et vous avez besoin d'une formation ? Programmation avec
Le langage C
Voir le programme détaillé

La librairie <locale.h> (<clocale> en C++)

La librairie limits.h Les catégories de localisation


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é

Présentation de l'entête <locale.h>

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++

Exemple d'utilisation

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;
}
Lecture de la localisation courante

Eléments fournis par la librairie <locale.h>

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

Note de portabilité

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.



La librairie limits.h Les catégories de localisation




Vous êtes un professionnel et vous avez besoin d'une formation ? Programmation avec
Le langage C
Voir le programme détaillé