_create_locale, _wcreate_locale

Cria um objeto de localidade.

Sintaxe

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

Parâmetros

category
Categoria.

locale
Especificador de localidade.

Retornar valor

Se um válido locale e category são fornecidos, as funções retornam as configurações de localidade especificadas como um _locale_t objeto. As configurações de localidade atuais do programa não são alteradas.

Comentários

A função _create_locale permite criar um objeto que representa algumas configurações específicas à região, para uso em versões específicas à localidade de várias funções CRT (funciona com o sufixo _l). O comportamento é semelhante a setlocale, com exceção de que, em vez de aplicar as configurações de localidade especificadas ao ambiente atual, as configurações são salvas em uma estrutura _locale_t que é retornada. A _locale_t estrutura deve ser liberada quando _free_locale não for mais necessária.

A função _wcreate_locale é uma versão de caractere largo da função _create_locale; o argumento locale para _wcreate_locale é uma cadeia de caracteres larga. Caso contrário, _wcreate_locale e _create_locale se comportam de forma idêntica.

O argumento category especifica as partes do comportamento específico à localidade que são afetadas. Os sinalizadores usados para category e as partes do programa que eles afetam são mostrados nesta tabela:

Sinalizador category Afeta
LC_ALL Todas as categorias, conforme listado abaixo.
LC_COLLATE As funções strcoll, _stricoll, wcscoll, _wcsicoll, strxfrm, _strncoll, _strnicoll, _wcsncoll, _wcsnicoll e wcsxfrm.
LC_CTYPE As funções de manipulação de caracteres (exceto isdigit, isxdigit, mbstowcs e mbtowc, que não são afetadas).
LC_MONETARY Informações de formatação monetária retornadas pela função localeconv.
LC_NUMERIC Caractere de ponto decimal para rotinas de saída formatadas (como printf), para rotinas de conversão de dados, e para informações não monetárias de formatação retornadas por localeconv. Além do caractere de ponto decimal, LC_NUMERIC define o separador de milhares e a cadeia de caracteres de controle de agrupamento retornada por localeconv.
LC_TIME As funções strftime e wcsftime.

Essa função valida os parâmetros category e locale. Se o parâmetro category não for um dos valores fornecidos na tabela anterior ou se locale for NULL, a função retornará NULL.

O argumento locale é um ponteiro para uma cadeia de caracteres que especifica a localidade. Para obter informações sobre o formato do argumento, consulte Nomes de localidade, Idiomas e Cadeias de caracteres de locale país/região.

O locale argumento pode ter vários tipos de valores: um nome de localidade, uma cadeia de caracteres de idioma, uma cadeia de caracteres de idioma e código de país/região, uma página de código ou uma combinação de cadeia de caracteres de idioma, código de país/região e página de código. O conjunto (de nomes de localidade disponíveis, idiomas, códigos de país/região e páginas de código) inclui todos os que são suportados pela API NLS do Windows. O conjunto de nomes de localidade _create_locale com suporte é descrito em Nomes de localidade, Idiomas e Cadeias de caracteres de país/região. O conjunto de cadeias de caracteres de idioma e país/região suportadas por _create_locale são listadas em Cadeias de caracteres de idioma e Cadeias de caracteres de país/região.

Para obter mais informações sobre configurações de localidade, consulte setlocale, _wsetlocale.

O nome anterior dessa função, __create_locale (com dois sublinhados à esquerda), foi preterido.

Por padrão, o estado global dessa função tem como escopo o aplicativo. Para alterar esse comportamento, consulte Estado global na CRT.

Requisitos

Rotina Cabeçalho necessário
_create_locale <locale.h>
_wcreate_locale <locale.h> ou <wchar.h>

Para obter informações sobre compatibilidade, consulte Compatibilidade.

Exemplo

// 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'

Confira também

Nomes de localidade, idiomas e cadeias de caracteres de país/região
Cadeias de caracteres de idioma
Cadeias de caracteres de país/região
_free_locale
_configthreadlocale
setlocale
Localidade
localeconv
_mbclen, mblen, _mblen_l
strlen, wcslen, _mbslen, _mbslen_l, _mbstrlen, _mbstrlen_l
mbstowcs, _mbstowcs_l
mbtowc, _mbtowc_l
_setmbcp
setlocale, _wsetlocale
Funções strcoll
strftime, wcsftime, _strftime_l, _wcsftime_l
strxfrm, wcsxfrm, _strxfrm_l, _wcsxfrm_l
wcstombs, _wcstombs_l
wctomb, _wctomb_l