Namespaces
Variants

setlocale

From cppreference.net
Definido en el encabezado <locale.h>
char * setlocale ( int category, const char * locale ) ;

La función setlocale instala la configuración regional del sistema especificada o una porción de ella como la nueva configuración regional C. Las modificaciones permanecen en efecto e influyen en la ejecución de todas las funciones de la biblioteca C sensibles a la configuración regional hasta la siguiente llamada a setlocale . Si locale es un puntero nulo, setlocale consulta la configuración regional C actual sin modificarla.

Contenidos

Parámetros

categoría - identificador de categoría de configuración regional, uno de las LC_xxx macros. Puede ser nulo.
configuración regional - identificador de configuración regional específico del sistema. Puede ser "" para la configuración regional preferida del usuario o "C" para la configuración regional mínima

Valor de retorno

puntero a una cadena terminada en nulo que identifica la configuración regional C después de aplicar los cambios, si los hay, o puntero nulo en caso de fallo.

Una copia de la cadena devuelta junto con la categoría utilizada en esta llamada a setlocale puede utilizarse posteriormente en el programa para restaurar la configuración regional al estado existente al final de esta llamada.

Notas

Durante el inicio del programa, el equivalente de setlocale ( LC_ALL , "C" ) ; se ejecuta antes de que se ejecute cualquier código del usuario.

Aunque el tipo de retorno es char * , modificar los caracteres apuntados es comportamiento indefinido.

Debido a que setlocale modifica el estado global que afecta la ejecución de funciones dependientes de la configuración regional, es comportamiento indefinido llamarlo desde un hilo, mientras otro hilo está ejecutando cualquiera de las siguientes funciones: 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 también define una configuración regional denominada "POSIX", que siempre está accesible y es exactamente equivalente a la configuración regional mínima predeterminada "C".

POSIX también especifica que el puntero devuelto, no solo el contenido de la cadena apuntada, puede quedar invalidado por llamadas posteriores a setlocale .

Ejemplo

#include <locale.h>
#include <stdio.h>
#include <time.h>
#include <wchar.h>
int main(void)
{
    // la configuración regional C será inglés habilitado para UTF-8;
    // el punto decimal será alemán
    // el formato de fecha y hora será japonés
    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);
}

Salida posible:

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

Referencias

  • Estándar C23 (ISO/IEC 9899:2024):
  • 7.11.1.1 La función setlocale (p: TBD)
  • Estándar C17 (ISO/IEC 9899:2018):
  • 7.11.1.1 La función setlocale (p: 163-164)
  • Estándar C11 (ISO/IEC 9899:2011):
  • 7.11.1.1 La función setlocale (p: 224-225)
  • Estándar C99 (ISO/IEC 9899:1999):
  • 7.11.1.1 La función setlocale (p: 205-206)
  • Estándar C89/C90 (ISO/IEC 9899:1990):
  • 4.4.1.1 La función setlocale

Véase también

categorías de configuración regional para setlocale
(constante macro)

Enlaces externos

1. Lista de nombres de configuración regional de Windows .
2. Lista de nombres de configuración regional de Linux .