2016-10-04 3 views
4

Vom The Linux Programming Interface:Ist das Standard-Gebietsschema eines Programms in * nix "posix"?

Es gibt zwei verschiedene Verfahren zur Herstellung der locale setlocale Einstellung(). Das Gebietsschema Argument kann eine Zeichenfolge sein, die eine der auf dem System definierten Gebietsschemata angibt (d. H. der Name eines der Unterverzeichnisse unter/usr/lib/locale), z. B. de_DE oder en_US. Alternativ kann das Gebietsschema als leere Zeichenfolge angegeben werden, was bedeutet, dass Gebietsschemaeinstellungen aus Umgebungsvariablen übernommen werden sollten:

setlocale (LC_ALL, "");

Wir müssen diesen Aufruf ausführen, damit ein Programm die Variablen der Umgebungsvariablen kennt. Wenn der Aufruf weggelassen wird, haben diese Umgebungsvariablen keine Auswirkung auf das Programm.

Also pro mein understaning, wenn mein Programm nicht setlocale Funktion explizit nicht aufruft, wird mein Programm verwenden Sie den Standard locale, die POSIX in *nix Systemen ist, nicht wahr? Ich kann das angegebene Dokument nicht durchsuchen.

Antwort

5

Mit Blick auf the man

7,4 Wie Programme die Locale Set

Ein C-Programm seine locale Umgebungsvariablen erbt, wenn es gestartet wird. Dies geschieht automatisch. Diese Variablen steuern jedoch nicht automatisch das von den Bibliotheksfunktionen verwendete Gebietsschema, da ISO C besagt, dass alle Programme standardmäßig im Standardland C gestartet werden. Um die von der Umgebung angegebenen Gebietsschemas zu verwenden, müssen Sie setlocale aufrufen. Nennen Sie es wie folgt:

setlocale (LC_ALL, ""); 

Emphasis Mine

Verwandte Themen