setlocale
|
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 . |