C-Bibliotheksfunktionen -setlocale()
C-Standardbibliothek - <locale.h>
Beschreibung
setlocaleist die C-Standardbibliothek<locale.h>Eine Funktion zum Festlegen oder Abfragen der Lokalisierungsinformationen des Programms. Sie ermöglicht Programmierern, Locale-Einstellungen für Zeichenklassifizierung, Zeichenkonvertierung, Währungsformatierung, Datums- und Zeitformatierung, Zahlenformatierung usw. festzulegen.
Deklaration
Nachfolgend finden Sie die Deklaration der Funktion setlocale().
#include <locale.h> char *setlocale(int category, const char *locale);
Parameter
-
category: Gibt die Lokalisierungskategorie an, die festgelegt oder abgefragt werden soll. Sie kann eine der folgenden Makros sein:LC_ALL: Legt alle Lokalisierungskategorien fest oder fragt sie ab.LC_COLLATE: Legt Lokalisierungsinformationen für den Zeichenfolgenvergleich fest oder fragt sie ab.LC_CTYPE: Legt Lokalisierungsinformationen für die Zeichenbehandlung fest oder fragt sie ab.LC_MONETARY: Legt Lokalisierungsinformationen für die Währungsformatierung fest oder fragt sie ab.LC_NUMERIC: Legt Lokalisierungsinformationen für die Zahlenformatierung fest oder fragt sie ab.LC_TIME: Legt Lokalisierungsinformationen für die Zeitformatierung fest oder fragt sie ab.
-
locale: Gibt die festzulegende Lokalisierungsinformation an. Sie kann eine der folgenden sein:"": Setzt auf die Standardeinstellung in den Umgebungsvariablen des Benutzers.NULL: Fragt die aktuelle Lokalisierungsinformation ab.Specific locale names: Wie zum Beispiel "en_US.UTF-8", wird verwendet, um eine bestimmte Locale festzulegen.
Rückgabewert
- if
localeistNULL, gibt einen Zeiger auf die aktuelle Locale-Informationszeichenfolge zurück. - if
localenotNULLund gibt bei erfolgreicher Festlegung einen Zeiger auf diese Locale-Informationszeichenfolge zurück. - if
localenotNULLund wenn das Setzen fehlschlägt, returnNULL。
Beispiel
Der folgende Code ist ein Beispiel für die Verwendung von setlocale und zeigt, wie Lokalisierungsinformationen festgelegt und abgefragt werden.
Lokalisierungsinformationen festlegen und abfragen:
Beispiel
#include <locale.h>
int main() {
// Aktuelle Locale-Informationen abfragen
printf("Standard-Locale: %s\n", setlocale(LC_ALL, NULL));
// Locale-Informationen auf die Standardeinstellungen aus den Umgebungsvariablen des Benutzers setzen
setlocale(LC_ALL, "");
// Aktuelle Locale-Informationen abrufen und ausgeben
printf("Locale nach dem Setzen auf '': %s\n", setlocale(LC_ALL, NULL));
// Locale-Informationen auf "en_US.UTF-8" setzen
if (setlocale(LC_ALL, "en_US.UTF-8") != NULL) {
printf("Locale nach dem Setzen auf 'en_US.UTF-8': %s\n", setlocale(LC_ALL, NULL));
} else {
printf("Locale kann nicht auf 'en_US.UTF-8' gesetzt werden\n");
}
return 0;
}
Lassen Sie uns das obige Programm kompilieren und ausführen; dies erzeugt das folgende Ergebnis:
Default locale: C Locale after setting to '': zh_CN.UTF-8 Locale after setting to 'en_US.UTF-8': en_US.UTF-8
Zahlen gemäß den Lokalisierungsinformationen formatieren:
Beispiel
#include <locale.h>
int main() {
// Locale-Informationen auf die Standardeinstellungen aus den Umgebungsvariablen des Benutzers setzen
setlocale(LC_NUMERIC, "");
// Lokalisierte Gleitkommazahl ausgeben
printf("Formatierte Zahl: %'.2f\n", 1234567.89);
// Lokalisierungsinformationen auf "de_DE.UTF-8" setzen (Deutsch - Deutschland)
if (setlocale(LC_NUMERIC, "de_DE.UTF-8") != NULL) {
printf("Locale nach dem Setzen auf 'de_DE.UTF-8': %s\n", setlocale(LC_NUMERIC, NULL));
printf("Formatierte Zahl im deutschen Locale: %'.2f\n", 1234567.89);
} else {
printf("Locale kann nicht auf 'de_DE.UTF-8' gesetzt werden\n");
}
return 0;
}
Lassen Sie uns das obige Programm kompilieren und ausführen; dies erzeugt das folgende Ergebnis:
Formatted number: 1,234,567.89 Locale after setting to 'de_DE.UTF-8': de_DE.UTF-8 Formatted number in German locale: 1234567,89
Detaillierte Beschreibung
1. Lokalisierungsinformationen setzen und abfragen
- Zu Beginn des Programms können Sie
setlocale(LC_ALL, "");Setzen Sie die Lokalisierungsinformationen des Programms auf die Standardeinstellungen in den Umgebungsvariablen des Benutzers. Benutzerumgebungsvariablen werden normalerweise vom Betriebssystem oder vom Benutzer festgelegt und geben das Standardgebietsschema an, das das Programm zur Laufzeit verwenden soll. - Sie können
setlocale(LC_ALL, "en_US.UTF-8");oder andere Gebietsschema-Zeichenfolgen, um ein bestimmtes Gebietsschema festzulegen. - Nutzung
setlocale(LC_ALL, NULL);Fragt die aktuellen Lokalisierungsinformationen ab und gibt eine Zeichenfolge zurück, die das aktuelle Gebietsschema beschreibt.
2. Lokalisierungskategorien
Jede Kategorie steuert bestimmte Aspekte des Programms:
LC_COLLATE: wirkt sich auf Zeichenfolgenvergleichsfunktionen aus (wie z. B.strcollundstrxfrm)。LC_CTYPE: wirkt sich auf Funktionen zur Zeichenklassifizierung und -konvertierung aus (wie z. B.isalphaundtoupper)。LC_MONETARY: wirkt sich auf Funktionen zur Währungsformatierung aus (wie z. B.localeconv)。LC_NUMERIC: Wirkt sich auf die numerische Formatierung aus (wie Dezimaltrennzeichen und Tausendertrennzeichen).LC_TIME: wirkt sich auf Datums- und Zeitformate aus (wie z. B.strftime)。
Zusammenfassung
setlocale-Funktion ist ein wichtiges Werkzeug zum Festlegen und Abfragen von Lokalisierungsinformationen des Programms. Es ermöglicht Programmen, sich an verschiedene Sprachen und kulturelle Konventionen anzupassen und dadurch Internationalisierung und Lokalisierung zu erreichen. Durch die Verwendung vonsetlocale, können Programme lokalisierte Informationen wie Zeichenfolgen, Zahlen, Währungen, Datumsangaben und Uhrzeiten korrekt verarbeiten und anzeigen.