Partager via


setlocale, _wsetlocale

L'ensemble ou récupèrent les paramètres régionaux à l'exécution.

char *setlocale(
   int category,
   const char *locale 
);
wchar_t *_wsetlocale(
   int category,
   const wchar_t *locale 
);

Paramètres

  • category
    Catégorie affectée par les paramètres régionaux.

  • locale
    Spécificateur de paramètres régionaux.

Valeur de retour

Si locale valide et category sont fournis, retourne un pointeur vers la chaîne a associés à locale spécifié et category.Si locale ou category est pas valide, retourne un pointeur null et les paramètres régionaux du programme ne sont pas modifiés.

Par exemple, l'appel

setlocale( LC_ALL, "en-US" );

définit les catégories, en retournant uniquement la chaîne

en-US

Vous pouvez utiliser le pointeur de chaînes retourné par setlocale dans les appels suivants pour restaurer cette partie des informations de paramètres régionaux du programme, en supposant que votre programme ne modifie pas le pointeur ou une chaîne.Les appels ultérieurs à setlocale remplacez la chaîne, qui rend les pointeurs de chaîne non retournés par des rappels plus valides.Vous pouvez utiliser _strdup pour enregistrer une copie d'une chaîne spécifique de paramètres régionaux.

Notes

Utilisez la fonction d' setlocale pour définir, modifier, ou en interroger ou toutes les informations de paramètres régionaux du programme en cours spécifiées par locale et category.locale fait référence à la localité (pays/région et langage) pour laquelle vous pouvez personnaliser certains aspects de votre programme.Certaines catégories dépendent des paramètres régionaux, notamment la mise en forme des dates et le format d'affichage des valeurs monétaires.Si vous définissez locale à la chaîne par défaut pour un langage avec plusieurs formulaires prises en charge sur votre ordinateur, vous devez vérifier le code de retour d' setlocale pour voir quel langage est appliquée.Par exemple, en utilisant « Chinois » pourrait entraîner une valeur de retour d' chinese-simplified ou d' chinese-traditional.

_wsetlocale est une version à caractère élargi d' setlocale; l'argument d' locale et la valeur de retour d' _wsetlocale sont des chaînes à caractères larges._wsetlocale et setlocale se comportent de sinon.

Mappages de routines de texte générique

Routine de TCHAR.H

_UNICODE et non définis _MBCS

_MBCS défini

_UNICODE défini

_tsetlocale

setlocale

setlocale

_wsetlocale

L'argument d' category spécifie les parties des informations de paramètres régionaux d'un programme affectées.Les macros utilisées pour category et les parties du programme qu'elles affectent les sont les suivantes :

  • LC_ALL
    Toutes les catégories, comme répertoriées ci-dessous.

  • LC_COLLATE
    strcoll, _stricoll, wcscoll, _wcsicoll, strxfrm, _strncoll, _strnicoll, _wcsncoll, _wcsnicoll, et fonctions d' wcsxfrm .

  • LC_CTYPE
    Les fonctions de gestion caractère- (sauf isdigit, isxdigit, mbstowcs, et mbtowc, qui ne sont pas affectés).

  • LC_MONETARY
    Les informations de mise en forme Monétaire- retournées par la fonction d' localeconv .

  • LC_NUMERIC
    Caractère de virgule décimale pour les routines de sortie mise en forme (par exemple printf), pour les routines de conversion de données, et pour des informations de mise en forme nonmonétaire retournée par localeconv. Outre le caractère de virgule décimale, LC_NUMERIC définit également le séparateur des milliers et la chaîne de contrôle de regroupement retournés par localeconv.

  • LC_TIME
    Les fonctions d' strftime et d' wcsftime .

Cette fonction valide le paramètre de catégorie.Si le paramètre de catégorie n'est pas l'une des valeurs fournies dans le tableau ci-dessus, le gestionnaire de paramètre non valide est appelé, comme décrit dans Validation des paramètres.Si est autorisé à l'exécution pour continuer, la fonction définit errno à EINVAL et retourne NULL.

L'argument d' locale est un pointeur vers une chaîne qui spécifie les paramètres régionaux.Pour plus d'informations sur le format de l'argument d' locale, consultez Chaînes relatives aux noms, aux langues, au pays et à la région.Si les points d' locale à une chaîne vide, les paramètres régionaux est l'environnement natif implémentation défini.Une valeur d' C spécifie l'environnement de conformation minimal ANSI pour la traduction C.Les paramètres régionaux d' C supposent que tous les types de données d' char sont de 1 octets et que leur valeur est toujours moins de 256.

Au démarrage du programme, l'équivalent de l'instruction suivante est exécuté :

setlocale( LC_ALL, "C" );

L'argument d' locale peut prendre un nom des paramètres régionaux, une chaîne SQL, une chaîne de langue et un pays/région code, une page de codes, ou une chaîne SQL, un pays/région code, et une page de codes.L'ensemble des noms des paramètres régionaux disponibles, de langages, de pays ou de région codes, et de pages de codes inclut tous ceux pris en charge par l'API windows NLS exception de les pages de codes qui requièrent plus de deux octets pour chaque caractère, tel que UTF-7 et UTF-8.Si vous fournissez une page de codes comme UTF-7 ou UTF-8, setlocale échoue, qui retourne NULL.L'ensemble des noms des paramètres régionaux pris en charge par setlocale sont décrits dans Chaînes relatives aux noms, aux langues, au pays et à la région.L'ensemble de chaînes de langue et de pays/région prises en charge par setlocale sont répertoriés dans Chaînes de langage et Chaînes de pays/région.

Un pointeur null passé comme argument d' locale indique setlocale interroger et non définissez l'environnement int.Si l'argument d' locale est un pointeur null, les paramètres régionaux du programme ne sont pas modifiés.À la place, setlocale retourne un pointeur vers la chaîne associée à category des paramètres régionaux du thread.Si l'argument d' category est LC_ALL, la fonction retourne une chaîne indiquant la configuration actuelle de chacune des catégories, séparés par des points-virgules.Par exemple, la séquence d'appels

// Set all categories and return "en-US"

setlocale(LC_ALL, "en-US");

// Set only the LC_MONETARY category and return "fr-FR"

setlocale(LC_MONETARY, "fr-FR");

printf("%s\n", setlocale(LC_ALL, NULL));

retourne «  »

LC_COLLATE=en-US;LC_CTYPE=en-US;LC_MONETARY=fr-FR;LC_NUMERIC=en-US;LC_TIME=en-US

ce qui est la chaîne associée à la catégorie d' LC_ALL .

Les exemples suivants se rapportent à la catégorie d' LC_ALL .L'un ou l'autre des chaînes « .OCP » et « .ACP » peut être utilisée à la place d'un numéro de page de codes pour spécifier l'utilisation de la page de codes OEM d'utilisateur et par défaut de la page de codes ANSI de l'utilisateur valeur par défaut, respectivement.

  • setlocale( LC_ALL, "" );
    Définit les paramètres régionaux à la valeur par défaut, qui est la page de codes ANSI de l'utilisateur valeur par défaut obtenue du système d'exploitation.

  • setlocale( LC_ALL, ".OCP" );
    Définit explicitement les paramètres régionaux dans la page de codes actuelle OEM obtenue du système d'exploitation.

  • setlocale( LC_ALL, ".ACP" );
    Définit les paramètres régionaux dans la page de codes ANSI obtenue du système d'exploitation.

  • setlocale( LC_ALL, "<localename>" );
    Définit les paramètres régionaux au nom des paramètres régionaux indiqué par <localename>.

  • setlocale( LC_ALL, "<language>_<country>" );
    Définit les paramètres régionaux au langage et au pays/région indiquée par <language> et <country>, à l'aide de la page de codes par défaut obtenue du système d'exploitation hôte.

  • setlocale( LC_ALL, "<language>_<country>.<code_page>" );
    Définit les paramètres régionaux de la langue, le pays/région, et dans la page de codes indiquée par <language>, <country>, et les chaînes d' <code_page> .Vous pouvez utiliser différentes combinaisons de langage, de pays ou de région, et de page de codes.Par exemple :

    setlocale( LC_ALL, "French_Canada.1252" );
    // Set code page to French Canada ANSI default
    setlocale( LC_ALL, "French_Canada.ACP" );
    // Set code page to French Canada OEM default
    setlocale( LC_ALL, "French_Canada.OCP" );
    
  • setlocale( LC_ALL, "<language>" );
    Définit les paramètres régionaux au langage indiqué par <language>, à l'aide de le pays ou la région par défaut pour le langage spécifié, et la page de codes ANSI de l'utilisateur valeur par défaut pour ces pays/région comme obtenu auprès de le système d'exploitation hôte.Par exemple, les appels suivants à setlocale sont équivalents :

    setlocale( LC_ALL, "en-US" );
    setlocale( LC_ALL, "English" );
    setlocale( LC_ALL, "English_United States.1252" );
    
  • setlocale( LC_ALL, ".<code_page>" );
    Définit la page de codes à la valeur indiquée par <code_page>, à l'aide de le pays ou la région et la langue par défaut (comme défini par le système d'exploitation hôte) pour la page de codes spécifiée.

La catégorie doit être LC_ALL ou LC_CTYPE pour effectuer un changement de page de codes.Par exemple, si le pays ou la région et la langue par défaut du système d'exploitation hôte sont « Etats-Unis » et « anglais, » les deux appels suivants à setlocale sont équivalents :

setlocale( LC_ALL, ".1252" );

setlocale( LC_ALL, "English_United States.1252");

Pour plus d'informations pragma de setlocale dans la référence de préprocesseur.

La fonction _configthreadlocale est utilisée pour contrôler si setlocale affecte les paramètres régionaux de tous les threads dans un programme ou uniquement les paramètres régionaux du thread appelant.

Configuration requise

Routine

En-tête requis

setlocale

<locale.h>

_wsetlocale

<locale.h> ou <wchar.h>

Pour des informations de compatibilité supplémentaires, consultez l' Compatibilité dans l'introduction.

Exemple

// crt_setlocale.cpp
// 
// This program demonstrates the use of setlocale when
// using two independent threads.
//

#include <locale.h>
#include <process.h>
#include <windows.h>
#include <stdio.h>
#include <time.h>

#define BUFF_SIZE 100

// Retrieve the date and time in the current
// locale's format.
int get_time(unsigned char* str)
{
    __time64_t ltime;
    struct tm  thetime;

    // Retieve the time
    _time64(&ltime);
    _gmtime64_s(&thetime, &ltime);

    // Format the current time structure into a string
    // using %#x is the long date representation,
    // appropriate to the current locale
    if (!strftime((char *)str, BUFF_SIZE, "%#x", 
                  (const struct tm *)&thetime))
    {
        printf("strftime failed!\n");
        return -1;
    }
    return 0;
}

// This thread sets its locale to German
// and prints the time.
unsigned __stdcall SecondThreadFunc( void* pArguments )
{
    unsigned char str[BUFF_SIZE];

    // Set the thread local
    printf("The thread locale is now set to %s.\n",
           setlocale(LC_ALL, "de-DE"));

    // Retrieve the time string from the helper function
    if (get_time(str) == 0)
    {
        printf("The time in de-DE locale is: '%s'\n", str);
    }

    _endthreadex( 0 );
    return 0;
} 

// The main thread spawns a second thread (above) and then
// sets the locale to English and prints the time.
int main()
{ 
    HANDLE          hThread;
    unsigned        threadID;
    unsigned char   str[BUFF_SIZE];

    // Configure per-thread locale to cause all subsequently created 
    // threads to have their own locale.
    _configthreadlocale(_ENABLE_PER_THREAD_LOCALE);

    // Retrieve the time string from the helper function
    printf("The thread locale is now set to %s.\n",
           setlocale(LC_ALL, "en-US"));

    // Create the second thread.
    hThread = (HANDLE)_beginthreadex( NULL, 0, &SecondThreadFunc,
                                      NULL, 0, &threadID );

    if (get_time(str) == 0)
    {
        // Retrieve the time string from the helper function
        printf("The time in en-US locale is: '%s'\n\n", str);
    }

    // Wait for the created thread to finish.
    WaitForSingleObject( hThread, INFINITE );

    // Destroy the thread object.
    CloseHandle( hThread );
}
  
  
  
  

Équivalent .NET Framework

Classe de System::Globalization::CultureInfo

Voir aussi

Référence

Chaînes relatives aux noms, aux langues, au pays et à la région

_configthreadlocale

_create_locale, _wcreate_locale

Paramètres régionaux

localeconv

_mbclen, mblen, _mblen_l

strlen, strlen_l, wcslen, wcslen_l, _mbslen, _mbslen_l, _mbstrlen, _mbstrlen_l

mbstowcs, _mbstowcs_l

mbtowc, _mbtowc_l

_setmbcp

fonctions de strcoll

strftime, wcsftime, _strftime_l, _wcsftime_l

strxfrm, wcsxfrm, _strxfrm_l, _wcsxfrm_l

wcstombs, _wcstombs_l

wctomb, _wctomb_l