B.10 <locale.h> 

Um Anwendungen an die lokale Umgebung wie beispielsweise lokalspezifische Zeichen oder Währungsinformationen anzupassen, ist in der Headerdatei <locale.h> eine Struktur mit dem Typ struct lconv mit folgenden Mitgliedern deklariert:
Elemente in struct lconv | Beschreibung |
char* decimal_point; |
das Zeichen für einen Dezimalpunkt bei nicht-monetären Werten |
char* thousands_sep; |
Trennzeichen für Gruppen von Ziffern. Einige Umgebungen fassen Ziffern in Tausendergruppen zusammen (beispielsweise ist das Trennzeichen ein Komma: "66,666"). |
char* grouping; |
Größe einer Gruppe von Ziffern |
char* int_curr_symbol; |
internationales Symbol für lokale Währung |
char* currency_symbol; |
lokales Währungssymbol |
char* mon_decimal_point; |
Zeichen für einen Dezimalpunkt bei Geldbeträgen |
char* mon_thousands_sep; |
Trennzeichen für (Tausender-)Gruppen von Ziffern bei Geldbeträgen |
char* mon_grouping; |
Größe einer Gruppe von Ziffern bei Geldbeträgen |
char* positive_sign; |
Symbol für positive Geldbeträge |
char* negative_sign; |
Symbol für negative Geldbeträge |
char int_frac_digits; |
Anzahl der Ziffern nach Dezimalpunkt von Geldbeträgen (international; meistens 2) |
char frac_digits; |
Anzahl der Ziffern nach Dezimalpunkt von Geldbeträgen (national; meistens 2) |
char p_cs_precedes; |
Für positive Geldbeträge: 0 = Währungssymbol nach dem Betrag 1 = Währungssymbol vor dem Betrag |
char int_p_cs_precedes; |
(C99) internationale Version von p_cs_precedes |
char p_sep_by_space; |
Für positive Geldbeträge Leerzeichen zwischen Währungssymbol und dem Betrag: 1 = Leerzeichen 0 = kein Leerzeichen |
char int_p_sep_by_space; |
(C99) internationale Version von p_sep_by_space |
char n_cs_precedes; |
Für negative Geldbeträge: 0 = Währungssymbol nach dem Betrag 1 = Währungssymbol vor dem Betrag |
char int_n_cs_precedes; |
(C99) internationale Version von n_cs_precedes |
char n_sep_by_space; |
Für negative Geldbeträge. Leerzeichen zwischen Währungssymbol und dem Betrag: 1 = Leerzeichen 0 = kein Leerzeichen |
char int_n_sep_by_space; |
(C99) internationale Version von n_sep_by_space |
char p_sign_posn; |
Position von positive_sign |
char int_p_sign_posn; |
(C99) internationale Version von p_sign_posn |
char n_sign_posn; |
Position von negative_sign |
char int_n_sign_posn; |
(C99) internationale Version von n_sign_posn |
Um auf die Elemente der Struktur lconv zuzugreifen, sind in der Headerdatei folgende zwei Funktionen deklariert:
Funktion | Beschreibung |
struct lconv *localeconv(void); |
Damit können Sie Informationen zur Formatierung von numerischen und monetären Werten ermitteln. |
char *setlocale( int category, const char *locale ); |
Damit können Sie bestimmte Kategorien oder die gesamte lokale Umgebung ändern. |
Für das erste Argument von setlocale() sind folgende Makros definiert, mit denen Sie die Kategorie festlegen können:
Kategorie | Betroffen davon im Programm |
LC_ALL |
Alle lokalen Aspekte (die gleich noch in der Kategorie folgen) werden berücksichtigt. |
LC_COLLATE |
nur die Funktionen zum Vergleich von Strings strcoll() und wcscoll(), um Zeichenketten nach dem lokalen Alphabet zu vergleichen (beispielsweise wird ß wie ein ss sortiert) |
LC_CTYPE |
nur die Funktionen für die Zeichenklassifizierung- und Umwandlung in <ctype.h> (beispielsweise isupper(), toupper()) bzw. <wctype.h> (beispielsweise mblen(), wctomb()) |
LC_MESSAGES1) |
Legt fest, in welcher Sprache die positiven und negativen Meldungen angezeigt werden. |
LC_MONETARY |
die Formatierungsinformationen für die Darstellung von Geldbeträgen (siehe auch localeconv()) |
LC_NUMERIC |
das Zeichen für den Dezimalpunkt der Ein-/Ausgabe und Stringkonvertierungen |
LC_TIME |
die Funktionen zur Formatierung des Datums strftime() und wcsftime() |
1) Eine Erweiterung zum künftigen ISO-C-Standard (bei einigen Systemen schon implementiert) |
Für das zweite Argument in der Funktion setlocale() sind folgende Angaben möglich:
Argument | Bedeutung |
"C" |
Keine lokalen Aspekte werden berücksichtigt. |
"" |
Die Einstellung richtet sich nach der Umgebung des Compilers. |
NULL |
Die lokale Umgebung wird nicht verändert. Wird verwendet, um mithilfe des Rückgabewertes von setlocale() die alte Umgebung zu sichern und eventuell wiederherszustellen. |
Ihre Meinung
Wie hat Ihnen das Openbook gefallen? Wir freuen uns immer über Ihre Rückmeldung. Schreiben Sie uns gerne Ihr Feedback als E-Mail an kommunikation@rheinwerk-verlag.de.