4.6.11. setlocale()

Selects the appropriate locale as specified by the category and locale arguments.

Syntax

char* setlocale(int category, const char* locale);

Implementation

The setlocale() function is used to changeor query part or all of the current locale. The effect of the category argument for each value is described below. A value of "C" for locale specifies the minimal environment for C translation. An empty string, "", for locale specifies the implementation-defined native environment. At program startup the equivalent of setlocale(LC_ALL, "C") is executed.

The values of category are:

LC_COLLATE

Affects the behavior of strcoll().

LC_CTYPE

Affects the behavior of the character handling functions.

LC_MONETARY

Affects the monetary formatting information returned by localeconv().

LC_NUMERIC

Affects the decimal-point character for the formatted input/output functions and the string conversion functions and the numeric formatting information returned by localeconv().

LC_TIME

Can affect the behavior of strftime(). For currently supported locales, the option has no effect.

LC_ALL

Affects all locale categories. This is the bitwise OR of the above categories.

Returns

If a pointer to string is given for locale and the selection is valid, the string associated with the specified category for the new locale is returned. If the selection cannot be honored, a null pointer is returned and the locale is not changed.

A null pointer for locale causes the string associated with the category for the current locale to be returned and the locale is not changed.

If category is LC_ALL and the most recent successful locale-setting call uses a category other than LC_ALL, a composite string might be returned. The string returned is such that a subsequent call with that string and its associated category restores that part the program locale. The string returned is not modified by the program, but might be overwritten by a subsequent call to setlocale().

Copyright © 1999-2001 ARM Limited. All rights reserved.ARM DUI 0067D
Non-Confidential