Fonctions de la bibliothèque C -setlocale()
Bibliothèque standard C - <locale.h>
Description
setlocaleest la bibliothèque standard C<locale.h>Une fonction utilisée pour définir ou interroger les informations de localisation du programme. Elle permet aux programmeurs de spécifier les paramètres régionaux pour la classification des caractères, la conversion des caractères, le formatage de la monnaie, le formatage de la date et de l'heure, le formatage numérique, etc.
Déclaration
Voici la déclaration de la fonction setlocale().
#include <locale.h> char *setlocale(int category, const char *locale);
Paramètre
-
category: Spécifie la catégorie de localisation à définir ou à interroger. Elle peut être l'une des macros suivantes :LC_ALL: Définit ou interroge toutes les catégories de localisation.LC_COLLATE: Définit ou interroge les informations de localisation pour la comparaison de chaînes.LC_CTYPE: Définit ou interroge les informations de localisation pour la gestion des caractères.LC_MONETARY: Définit ou interroge les informations de localisation pour le formatage monétaire.LC_NUMERIC: Définit ou interroge les informations de localisation pour le formatage numérique.LC_TIME: Définit ou interroge les informations de localisation pour le formatage de l'heure.
-
locale: Spécifie les informations de localisation à définir. Il peut s'agir de l'un des éléments suivants :"": Définit sur le paramètre par défaut dans les variables d'environnement de l'utilisateur.NULL: Interroge les informations de localisation actuelles.Specific locale names: Tel que "en_US.UTF-8", utilisé pour définir une locale spécifique.
Valeur de retour
- if
localeestNULL, renvoie un pointeur vers la chaîne d'informations de locale actuelle. - if
localenotNULLet, si la définition réussit, renvoie un pointeur vers cette chaîne d'informations de locale. - if
localenotNULLet si la définition échoue, retournerNULL。
Exemple
Ce qui suit est un exemple de code utilisant setlocale, montrant comment définir et interroger les informations de localisation.
Définir et interroger les informations de localisation :
Exemple
#include <locale.h>
int main() {
// Interroger les informations sur la locale actuelle
printf("Locale par défaut : %s\n", setlocale(LC_ALL, NULL));
// Définir les informations de locale sur les paramètres par défaut à partir des variables d'environnement de l'utilisateur
setlocale(LC_ALL, "");
// Obtenir et afficher les informations sur la locale actuelle
printf("Locale après avoir défini sur '' : %s\n", setlocale(LC_ALL, NULL));
// Définir les informations de locale sur "en_US.UTF-8"
if (setlocale(LC_ALL, "en_US.UTF-8") != NULL) {
printf("Locale après avoir défini sur 'en_US.UTF-8' : %s\n", setlocale(LC_ALL, NULL));
} else {
printf("Impossible de définir la locale sur 'en_US.UTF-8'\n");
}
return 0;
}
Compilons et exécutons le programme ci-dessus, cela produira le résultat suivant :
Default locale: C Locale after setting to '': zh_CN.UTF-8 Locale after setting to 'en_US.UTF-8': en_US.UTF-8
Formater les nombres selon les informations de localisation :
Exemple
#include <locale.h>
int main() {
// Définir les informations de locale sur les paramètres par défaut à partir des variables d'environnement de l'utilisateur
setlocale(LC_NUMERIC, "");
// Afficher un nombre à virgule flottante localisé
printf("Nombre formaté : %'.2f\n", 1234567.89);
// Définir les informations de locale sur "de_DE.UTF-8" (allemand - Allemagne)
if (setlocale(LC_NUMERIC, "de_DE.UTF-8") != NULL) {
printf("Locale après définition sur 'de_DE.UTF-8' : %s\n", setlocale(LC_NUMERIC, NULL));
printf("Nombre formaté dans la locale allemande : %'.2f\n", 1234567.89);
} else {
printf("Impossible de définir la locale sur 'de_DE.UTF-8'\n");
}
return 0;
}
Compilons et exécutons le programme ci-dessus, cela produira le résultat suivant :
Formatted number: 1,234,567.89 Locale after setting to 'de_DE.UTF-8': de_DE.UTF-8 Formatted number in German locale: 1234567,89
Description détaillée
1. Définir et interroger les informations de localisation
- Au début du programme, vous pouvez utiliser
setlocale(LC_ALL, "");Définit les informations de localisation du programme sur les paramètres par défaut des variables d'environnement utilisateur. Les variables d'environnement utilisateur sont généralement définies par le système d'exploitation ou par l'utilisateur, en spécifiant la locale par défaut que le programme doit utiliser au moment de l'exécution. - Vous pouvez utiliser
setlocale(LC_ALL, "en_US.UTF-8");ou d'autres chaînes de locale pour définir une locale spécifique. - Utilisation
setlocale(LC_ALL, NULL);Interroge les informations de localisation actuelles et renvoie une chaîne décrivant la locale actuelle.
2. Catégories de localisation
Chaque catégorie contrôle des aspects spécifiques du programme :
LC_COLLATE: affecte les fonctions de comparaison de chaînes (telles questrcolletstrxfrm)。LC_CTYPE: affecte les fonctions de classification et de conversion de caractères (telles queisalphaettoupper)。LC_MONETARY: affecte les fonctions liées au formatage monétaire (telles quelocaleconv)。LC_NUMERIC: Affecte le formatage numérique (comme le point décimal et le séparateur de milliers).LC_TIME: affecte les formats de date et d'heure (tels questrftime)。
Résumé
setlocaleest un outil important pour définir et interroger les informations de localisation du programme. Elle permet aux programmes de s'adapter à différentes langues et conventions culturelles, permettant ainsi de réaliser l'internationalisation et la localisation. En utilisantsetlocale, les programmes peuvent traiter et afficher correctement des informations localisées telles que des chaînes, des nombres, des devises, des dates et des heures.