The setlocale() function is the interface to the program’s locale. In general, any program that uses the invocation country’s conventions should place a call such as:
#include <locale.h> /*...*/ setlocale(LC_ALL, ""); |
early in the program’s execution path. This call causes the program’s current locale to change to the appropriate local version, since LC_ALL is the macro that specifies the entire locale instead of one category. The following are the standard categories:
LC_COLLATE |
sorting information |
LC_CTYPE |
character classification information |
LC_MONETARY |
currency printing information |
LC_NUMERIC |
numeric printing information |
LC_TIME |
date and time printing information |
Any of these macros can be passed as the first argument to setlocale() to specify that category.
The setlocale() function returns the name of the current locale for a given category (or LC_ALL) and serves in an inquiry-only capacity when its second argument is a null pointer. Thus, code similar to the following can be used to change the locale or a portion thereof for a limited duration:
#include <locale.h> /*...*/ char *oloc; /*...*/ oloc = setlocale(LC_category, NULL); if (setlocale(LC_category, "new") != 0) { /* use temporarily changed locale */ (void)setlocale(LC_category, oloc); } |
Most programs do not need this capability.