Udostępnij za pośrednictwem


_create_locale, _wcreate_locale

Tworzy obiekt ustawień regionalnych.

Składnia

_locale_t _create_locale(
   int category,
   const char *locale
);
_locale_t _wcreate_locale(
   int category,
   const wchar_t *locale
);

Parametry

category
Kategoria.

locale
Specyfikator ustawień regionalnych.

Wartość zwracana

Jeśli podano prawidłowe locale i category są podane, funkcje zwracają określone ustawienia regionalne jako _locale_t obiekt. Bieżące ustawienia regionalne programu nie są zmieniane.

Uwagi

Funkcja _create_locale umożliwia utworzenie obiektu reprezentującego niektóre ustawienia specyficzne dla regionu do użycia w wersjach specyficznych dla ustawień regionalnych wielu funkcji CRT (funkcje z sufiksem _l ). Zachowanie jest podobne do setlocale, z tą różnicą, że zamiast stosować określone ustawienia regionalne do bieżącego środowiska, ustawienia są zapisywane w _locale_t strukturze, która jest zwracana. Struktura _locale_t powinna zostać uwolniona, _free_locale gdy nie jest już potrzebna.

_wcreate_locale jest wersją szerokoznakową ; _create_localeargument to locale _wcreate_locale ciąg o szerokim znaku. _wcreate_locale i _create_locale zachowywać się identycznie inaczej.

Argument category określa części zachowania specyficznego dla ustawień regionalnych, których dotyczy problem. Flagi używane dla category i części programu, które mają wpływ, są jak pokazano w poniższej tabeli:

category flaga Wpływa
LC_ALL Wszystkie kategorie, jak wymieniono poniżej.
LC_COLLATE Funkcje strcoll, , wcscoll_strncoll_wcsicoll_stricoll_strnicoll_wcsncollstrxfrm, _wcsnicoll, i .wcsxfrm
LC_CTYPE Funkcje obsługi znaków (z wyjątkiem isdigit, isxdigit, mbstowcsi mbtowc, które nie mają wpływu).
LC_MONETARY Informacje o formatowaniu pieniężnym zwracane przez localeconv funkcję .
LC_NUMERIC Znak dziesiętny dla sformatowanych procedur wyjściowych (takich jak printf), dla procedur konwersji danych i dla informacji formatowania niepieniężnego zwracanych przez localeconv. Oprócz znaku LC_NUMERIC separatora dziesiętnego ustawia separator tysięcy i ciąg kontrolny grupowania zwracany przez localeconv.
LC_TIME Funkcje strftime i wcsftime .

Ta funkcja weryfikuje category parametry i locale . Jeśli parametr kategorii nie jest jedną z wartości podanych w poprzedniej tabeli lub jeśli locale jest NULL, funkcja zwraca NULLwartość .

Argument locale jest wskaźnikiem do ciągu, który określa ustawienia regionalne. Aby uzyskać informacje o formacie argumentu locale , zobacz Nazwy ustawień regionalnych, Języki i Ciągi kraju/regionu.

Argument locale może przyjmować kilka rodzajów wartości: nazwę ustawień regionalnych, ciąg języka, ciąg języka i kod kraju/regionu, stronę kodową lub kombinację ciągu językowego, kodu kraju/regionu i strony kodowej. Zestaw (dostępnych nazw ustawień regionalnych, języków, kodów kraju/regionu i stron kodu) obejmuje wszystkie obsługiwane przez interfejs API równoważenia obciążenia sieciowego systemu Windows. Zestaw obsługiwanych nazw _create_locale ustawień regionalnych jest opisany w temacie Nazwy ustawień regionalnych, Języki i Ciągi kraju/regionu. Zestaw ciągów języka i kraju/regionu obsługiwanych przez _create_locale program jest wymieniony w ciągach języka i ciągach kraju/regionu.

Aby uzyskać więcej informacji na temat ustawień regionalnych, zobacz setlocale, _wsetlocale.

Poprzednia nazwa tej funkcji __create_locale (z dwoma wiodącymi podkreśleniami) jest przestarzała.

Domyślnie stan globalny tej funkcji jest zakresem aplikacji. Aby zmienić to zachowanie, zobacz Stan globalny w CRT.

Wymagania

Procedura Wymagany nagłówek
_create_locale <locale.h>
_wcreate_locale <locale.h> lub <wchar.h>

Aby uzyskać więcej informacji o zgodności, zobacz Zgodność.

Przykład

// crt_create_locale.c
// Sets the current locale to "de-CH" using the
// setlocale function and demonstrates its effect on the strftime
// function.

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

int main(void)
{
    time_t ltime;
    struct tm thetime;
    unsigned char str[100];
    _locale_t locale;

    // Create a locale object representing the German (Switzerland) locale
    locale = _create_locale(LC_ALL, "de-CH");
    time (&ltime);
    _gmtime64_s(&thetime, &ltime);

    // %#x is the long date representation, appropriate to
    // the current locale
    if (!_strftime_l((char *)str, 100, "%#x",
                     (const struct tm *)&thetime, locale))
    {
        printf("_strftime_l failed!\n");
    }
    else
    {
        printf("In de-CH locale, _strftime_l returns '%s'\n", str);
    }

    _free_locale(locale);

    // Create a locale object representing the default C locale
    locale = _create_locale(LC_ALL, "C");
    time(&ltime);
    _gmtime64_s(&thetime, &ltime);

    if (!_strftime_l((char *)str, 100, "%#x",
                     (const struct tm *)&thetime, locale))
    {
        printf("_strftime_l failed!\n");
    }
    else
    {
        printf("In 'C' locale, _strftime_l returns '%s'\n", str);
    }

    _free_locale(locale);
}
In de-CH locale, _strftime_l returns 'Samstag, 9. Februar 2002'
In 'C' locale, _strftime_l returns 'Saturday, February 09, 2002'

Zobacz też

Nazwy ustawień regionalnych, języki i ciągi kraj/region
Ciągi językowe
Ciągi kraju/regionu
_free_locale
_configthreadlocale
setlocale
ustawienia regionalne
localeconv
_mbclen, , mblen_mblen_l
strlen, , wcslen, _mbslen, _mbslen_l, , _mbstrlen_mbstrlen_l
mbstowcs, _mbstowcs_l
mbtowc, _mbtowc_l
_setmbcp
setlocale, _wsetlocale
strcoll, funkcje
strftime, , wcsftime, , _strftime_l_wcsftime_l
strxfrm, , wcsxfrm, , _strxfrm_l_wcsxfrm_l
wcstombs, _wcstombs_l
wctomb, _wctomb_l