Namespaces
Variants

setlocale

From cppreference.net
Definiert in Header <locale.h>
char * setlocale ( int category, const char * locale ) ;

Die setlocale -Funktion installiert die angegebene Systemlocale oder einen Teil davon als neue C-Locale. Die Änderungen bleiben wirksam und beeinflussen die Ausführung aller localesensitiven C-Bibliotheksfunktionen bis zum nächsten Aufruf von setlocale . Wenn locale ein Nullzeiger ist, setlocale fragt die aktuelle C-Locale ab, ohne sie zu modifizieren.

Inhaltsverzeichnis

Parameter

Kategorie - Lokalisierungs-Kategoriekennung, eine der LC_xxx Makros. Kann null sein.
Locale - Systemspezifische Lokalisierungskennung. Kann "" für die benutzerpräferierte Locale oder "C" für die minimale Locale sein

Rückgabewert

Zeiger auf eine schmale nullterminierte Zeichenkette, die die C-Locale nach Anwendung der Änderungen (falls vorhanden) identifiziert, oder ein Nullzeiger bei Fehlschlag.

Eine Kopie der zurückgegebenen Zeichenkette zusammen mit der in diesem Aufruf von setlocale verwendeten Kategorie kann später im Programm verwendet werden, um das Gebietsschema auf den Zustand am Ende dieses Aufrufs zurückzusetzen.

Hinweise

Während des Programmstarts wird das Äquivalent von setlocale ( LC_ALL , "C" ) ; ausgeführt, bevor jeglicher Benutzercode läuft.

Obwohl der Rückgabetyp char * ist, ist das Modifizieren der gezeigten Zeichen undefiniertes Verhalten.

Da setlocale globalen Zustand modifiziert, der die Ausführung von lokalabhängigen Funktionen beeinflusst, ist es undefiniertes Verhalten, es von einem Thread aus aufzurufen, während ein anderer Thread eine der folgenden Funktionen ausführt: 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 definiert ebenfalls ein Locale namens "POSIX", das immer zugänglich ist und genau dem standardmäßigen minimalen "C"-Locale entspricht.

POSIX legt ebenfalls fest, dass der zurückgegebene Zeiger, nicht nur der Inhalt der Zeichenkette, auf die gezeigt wird, durch nachfolgende Aufrufe von setlocale ungültig werden kann.

Beispiel

#include <locale.h>
#include <stdio.h>
#include <time.h>
#include <wchar.h>
int main(void)
{
    // the C locale will be UTF-8 enabled English;
    // decimal dot will be German
    // date and time formatting will be Japanese
    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);
}

Mögliche Ausgabe:

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

Referenzen

  • C23-Standard (ISO/IEC 9899:2024):
  • 7.11.1.1 Die setlocale-Funktion (S.: TBD)
  • C17-Standard (ISO/IEC 9899:2018):
  • 7.11.1.1 Die setlocale-Funktion (S: 163-164)
  • C11-Standard (ISO/IEC 9899:2011):
  • 7.11.1.1 Die setlocale-Funktion (S. 224-225)
  • C99-Standard (ISO/IEC 9899:1999):
  • 7.11.1.1 Die setlocale-Funktion (S: 205-206)
  • C89/C90 Standard (ISO/IEC 9899:1990):
  • 4.4.1.1 Die setlocale-Funktion

Siehe auch

Lokalisierungskategorien für setlocale
(Makrokonstante)
C++-Dokumentation für setlocale

Externe Links

1. Liste der Windows-Gebietsschemanamen .
2. Liste der Linux-Gebietsschemanamen .