Namespaces
Variants

setlocale

From cppreference.net
Défini dans l'en-tête <locale.h>
char * setlocale ( int category, const char * locale ) ;

La fonction setlocale installe la locale système spécifiée ou une partie de celle-ci comme nouvelle locale C. Les modifications restent en vigueur et influencent l'exécution de toutes les fonctions de la bibliothèque C sensibles à la locale jusqu'au prochain appel à setlocale . Si locale est un pointeur nul, setlocale interroge la locale C actuelle sans la modifier.

Table des matières

Paramètres

catégorie - identifiant de catégorie de paramètres régionaux, l'une des LC_xxx macros. Peut être nul.
paramètres régionaux - identifiant de paramètres régionaux spécifique au système. Peut être "" pour les paramètres régionaux préférés de l'utilisateur ou "C" pour les paramètres régionaux minimaux

Valeur de retour

pointeur vers une chaîne de caractères étroite terminée par un caractère nul identifiant les paramètres régionaux C après application des modifications, le cas échéant, ou pointeur nul en cas d'échec.

Une copie de la chaîne retournée ainsi que la catégorie utilisée dans cet appel à setlocale peut être utilisée ultérieurement dans le programme pour restaurer les paramètres régionaux à l'état qu'ils avaient à la fin de cet appel.

Notes

Pendant le démarrage du programme, l'équivalent de setlocale ( LC_ALL , "C" ) ; est exécuté avant l'exécution de tout code utilisateur.

Bien que le type de retour soit char * , modifier les caractères pointés est un comportement indéfini.

Étant donné que setlocale modifie l'état global qui affecte l'exécution des fonctions dépendantes de la locale, il s'agit d'un comportement indéfini de l'appeler depuis un thread, tandis qu'un autre thread exécute l'une des fonctions suivantes : fprintf , isprint , iswdigit , localeconv , tolower , fscanf , ispunct , iswgraph , mblen , toupper , isalnum , isspace , iswlower , mbstowcs , towlower , isalpha , isupper , iswprint , mbtowc , towupper , isblank , iswalnum , iswpunct , setlocale , wcscoll , iscntrl , iswalpha , iswspace , strcoll , wcstod , isdigit , iswblank , iswupper , strerror , wcstombs , isgraph , iswcntrl , iswxdigit , strtod , wcsxfrm , islower , iswctype , isxdigit .

POSIX définit également un paramètre régional nommé "POSIX", qui est toujours accessible et est exactement équivalent au paramètre régional minimal par défaut "C".

POSIX spécifie également que le pointeur retourné, et pas seulement le contenu de la chaîne pointée, peut être invalidé par des appels ultérieurs à setlocale .

Exemple

#include <locale.h>
#include <stdio.h>
#include <time.h>
#include <wchar.h>
int main(void)
{
    // le paramètre régional C sera l'anglais avec support UTF-8 ;
    // le séparateur décimal sera allemand
    // le formatage de la date et de l'heure sera japonais
    setlocale(LC_ALL, "en_US.UTF-8");
    setlocale(LC_NUMERIC, "de_DE.utf8");
    setlocale(LC_TIME, "ja_JP.utf8");
    wchar_t str[100];
    time_t t = time(NULL);
    wcsftime(str, 100, L"%A %c", localtime(&t));
    wprintf(L"Number: %.2f\nDate: %ls\n", 3.14, str);
}

Sortie possible :

Number: 3,14
Date: 月曜日 2017年09月25日 13時00分15秒

Références

  • Norme C23 (ISO/CEI 9899:2024) :
  • 7.11.1.1 La fonction setlocale (p: TBD)
  • Norme C17 (ISO/CEI 9899:2018) :
  • 7.11.1.1 La fonction setlocale (p: 163-164)
  • Norme C11 (ISO/IEC 9899:2011) :
  • 7.11.1.1 La fonction setlocale (p: 224-225)
  • Norme C99 (ISO/CEI 9899:1999) :
  • 7.11.1.1 La fonction setlocale (p : 205-206)
  • Norme C89/C90 (ISO/IEC 9899:1990) :
  • 4.4.1.1 La fonction setlocale

Voir aussi

catégories de paramètres régionaux pour setlocale
(constante macro)
Documentation C++ pour setlocale

Liens externes

1. Liste des noms de paramètres régionaux Windows .
2. Liste des noms de paramètres régionaux Linux .