Udostępnij za pośrednictwem


setLocale, _wsetlocale

Ustawić lub pobrać ustawień regionalnych wykonania.

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

Parametry

  • category
    Kategoria wpływ ustawień regionalnych.

  • locale
    Określenia ustawień regionalnych.

Wartość zwracana

Jeśli jest to prawidłowy locale i category są podane, zwraca wskaźnik do ciąg skojarzone z określonym locale i category.Jeśli locale lub category jest nieprawidłowa, funkcja zwraca pusty wskaźnik i wybranych ustawień regionalnych programu nie są zmieniane.

Na przykład wywołanie

setlocale( LC_ALL, "en-US" );

Ustawia wszystkie kategorie, zwracanie tylko ciąg

en-US

Można użyć wskaźnika ciąg zwrócony przez setlocale w kolejnych zaproszeń do przywrócenia tą częścią informacji o ustawieniach regionalnych programu, przy założeniu, że Twój program nie zmienia się, wskaźnik lub ciąg.Później wzywa do setlocale zastąpić ciąg, który sprawia, że wskaźniki ciąg zwrócony przez wcześniejsze wywołania nie jest już prawidłowy.Można użyć _strdup Aby zapisać kopię ciągu określonych ustawień regionalnych.

Uwagi

Użycie setlocale funkcji, aby ustawić, zmienić lub kwerendy niektóre lub wszystkie bieżące informacje ustawień regionalnych program określony przez locale i category.localeodnosi się do tej lokalizacji (kraj/region i język), dla którego można dostosować niektóre aspekty programu.Niektóre kategorie zależne od ustawień lokalnych obejmują, formatowania daty, jak i format wyświetlania dla wartości pieniężnych.Jeśli ustawisz locale Aby domyślny ciąg języka z wielu formularzy obsługiwanych na komputerze, należy sprawdzić setlocale kod, aby dowiedzieć się, jaki język jest powrotu.Na przykład wykorzystanie "chiński" może spowodować zwracana wartość wynosząca chinese-simplified lub chinese-traditional.

_wsetlocalejest ona szerokich znaków do setlocale; locale wartość argumentów i _wsetlocale są ciągami szerokich znaków._wsetlocalei setlocale zachowują się identycznie inaczej.

Tekst rodzajowy rutynowych mapowania

TCHAR.Rozpoczęto wykonywanie procedury h

_UNICODE & _MBCS nie zdefiniowany

_MBCS, definicja

_UNICODE, definicja

_tsetlocale

setlocale

setlocale

_wsetlocale

category Argument określa części informacji o ustawieniach regionalnych programu, którego dotyczą.Makra używane do category i częściach programu wpływają one na są następujące:

  • LC_ALL
    Wszystkie kategorie, wymienione poniżej.

  • LC_COLLATE
    The strcoll, _stricoll, wcscoll, _wcsicoll, strxfrm, _strncoll, _strnicoll, _wcsncoll, _wcsnicoll, and wcsxfrm functions.

  • LC_CTYPE
    Funkcje obsługi znaków (z wyjątkiem isdigit, isxdigit, mbstowcs, i mbtowc, które są bez zmian).

  • LC_MONETARY
    Formatowanie walutowego informacje zwrócone przez localeconv funkcji.

  • LC_NUMERIC
    Dziesiętnego znaku dla procedur sformatowane dane wyjściowe (takich jak printf), dla procedur konwersji danych i dla niepieniężne informacje o formatowaniu, zwracane przez localeconv. Oprócz znaku dziesiętnego LC_NUMERIC separator tysięcy zestawów i grupowania kontrolować ciąg zwracany przez program localeconv.

  • LC_TIME
    strftime i wcsftime funkcji.

Ta funkcja sprawdza poprawność parametrów kategorii.Jeśli parametr kategorii nie jest jedną z wartości podane w powyższej tabeli, program obsługi nieprawidłowy parametr jest wywoływana, zgodnie z opisem w Sprawdzanie poprawności parametru.Jeśli wykonanie może w dalszym ciągu, funkcja ustawi errno do EINVAL i zwraca NULL.

locale Argument jest wskaźnik na ciąg, który określa ustawienia regionalne.Aby uzyskać informacje dotyczące formatu locale argument, zobacz Nazwy lokalne, języki i ciągi kraj/region.Jeśli locale punkty na ciąg pusty, ustawień regionalnych jest zdefiniowane w implementacji środowiska macierzystego.Wartość C określa minimalne środowisko uzgadniania ANSI C translacji.C Ustawień regionalnych zakłada się, że wszystkie char typy danych są 1 bajta, a ich wartość jest zawsze mniejsza niż 256.

Przy uruchamianiu programu wykonywana jest odpowiednikiem następującą instrukcję:

setlocale( LC_ALL, "C" );

locale Argument może zająć nazwy ustawień regionalnych, ciąg znaków w języku, ciąg języka oraz kod kraju/regionu, stronę kodową lub ciąg znaków w języku, kod kraju/regionu, a strona kodowa.Zestaw nazw dostępnych ustawień regionalnych, języki, kody krajów/regionów i stron kodowych zawiera wszystkie wspieranych przez Windows API NLS, z wyjątkiem stron kodowych, które wymagają więcej niż dwa bajty na znak, takich jak UTF-7 i UTF-8.Jeżeli określona strona kodowa jak UTF-7 lub UTF-8, setlocale zakończy się niepowodzeniem, zwracanie wartości NULL.Zestaw nazw ustawień regionalnych obsługiwanych przez setlocale są opisane w Nazwy lokalne, języki i ciągi kraj/region.Zestaw ciągów języka i kraju/regionu, obsługiwane przez setlocale są wymienione w Ciągi znaków języka i Ciągi kraju/regionu.

Pusty wskaźnik przekazany jako locale argument mówi setlocale do kwerendy, a nie zestaw międzynarodowego środowiska.Jeśli locale argument jest pusty wskaźnik, obecnych ustawień lokalnych programu nie ulega zmianie.Zamiast tego setlocale zwraca wskaźnik do ciągu skojarzonego ze category z bieżących ustawień regionalnych dla wątku.Jeśli category argument jest LC_ALL, funkcja zwraca ciąg wskazujący bieżące ustawienie każdej z kategorii, oddzielając je średnikami.Na przykład, sekwencję wywołań

// 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));

Zwraca

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

który jest ciąg skojarzone z LC_ALL kategorii.

Następujące przykłady odnoszą się do LC_ALL kategorii.Albo z ciągów ".OCP "i".AKP"mogą być używane zamiast numer strony kodowej do określania użytkownika domyślna strona kodowa OEM i użytkowników domyślna strona kodowa ANSI, odpowiednio.

  • setlocale( LC_ALL, "" );
    Ustawia ustawienia regionalne domyślna, którą jest użytkownika domyślna strona kodowa ANSI, uzyskane z systemu operacyjnego.

  • setlocale( LC_ALL, ".OCP" );
    Jawnie zestawy ustawień regionalnych do bieżącej strony kodowej OEM uzyskane od systemu operacyjnego.

  • setlocale( LC_ALL, ".ACP" );
    Ustawia ustawienia regionalne strona kodowa ANSI, uzyskane z systemu operacyjnego.

  • setlocale( LC_ALL, "<localename>" );
    Ustawia ustawienia regionalne do nazwy ustawień regionalnych, wskazanych przez <localename>.

  • setlocale( LC_ALL, "<language>_<country>" );
    Ustawia ustawienia regionalne języka i kraju/regionu, wskazanych przez <language> i <country>, przy użyciu domyślnej strony kodowej uzyskane z systemu operacyjnego hosta.

  • setlocale( LC_ALL, "<language>_<country>.<code_page>" );
    Zestawy ustawień regionalnych języka, kraju/regionu i strony kodowej wskazanych przez <language>, <country>, i <code_page> ciągów.Można użyć różnych kombinacji języka, kraju/regionu i strony kodowej.Na przykład:

    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>" );
    Ustawia ustawienia regionalne na język wskazany przez <language>, przy użyciu domyślnego kraju/regionu dla języka określone i użytkownika domyślna strona kodowa ANSI w danym kraju/regionie jako uzyskane z systemu operacyjnego hosta.Na przykład, po zaproszeniu do setlocale działają tak samo:

    setlocale( LC_ALL, "en-US" );
    setlocale( LC_ALL, "English" );
    setlocale( LC_ALL, "English_United States.1252" );
    
  • setlocale( LC_ALL, ".<code_page>" );
    Ustawia stronę kodową na wartość wskazywana przez <code_page>, przy użyciu domyślnego kraju/regionu i języka (zgodnie z definicją systemu operacyjnego hosta) dla określona strona kodowa.

Kategoria musi być albo LC_ALL lub LC_CTYPE w celu dokonania zmiany strony kodowej.Na przykład, jeśli domyślnego kraju/regionu i języka systemu operacyjnego hosta są "USA" i "English", następujących dwóch połączeń do setlocale działają tak samo:

setlocale( LC_ALL, ".1252" );

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

Aby uzyskać więcej informacji, zobacz setlocale pragma w Odwołanie Preprocessor.

Funkcja _configthreadlocale służy do kontrolowania czy setlocale wpływa na ustawienia regionalne wszystkie wątki w programie lub tylko z ustawieniami regionalnymi wątek wywołujący.

Wymagania

Rozpoczęto wykonywanie procedury

Wymaganego nagłówka

setlocale

<locale.h>

_wsetlocale

<locale.h> lub <wchar.h>

Aby uzyskać dodatkowe informacje o zgodności, zobacz zgodności we wprowadzeniu.

Przykład

// 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 );
}
  
  
  
  

Odpowiednik w programie .NET Framework

Klasa System::Globalization::CultureInfo

Zobacz też

Informacje

Nazwy lokalne, języki i ciągi kraj/region

_configthreadlocale

_create_locale, _wcreate_locale

Ustawienia regionalne

localeconv

_mbclen, mblen, _mblen_l

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

mbstowcs, _mbstowcs_l

mbtowc, _mbtowc_l

_setmbcp

Funkcje strcoll

strftime, wcsftime, _strftime_l, _wcsftime_l

strxfrm, wcsxfrm, _strxfrm_l, _wcsxfrm_l

wcstombs, _wcstombs_l

wctomb, _wctomb_l