www.digitalmars.com Home | Search | CTG | RTL | IDDE | STL | C/C++ Compiler | D
Last update Thu Apr 13 20:39:46 2006
Runtime Library
Reference


· Constants
· Data types

Standard C
· assert.h
· complex.h
· ctype.h
· fenv.h
· float.h
· locale.h
· math.h
· setjmp.h
· signal.h
· stdarg.h
· stddef.h
· stdio.h
· stdlib.h
· string.h
· time.h


Standard C++
· IOstream
· new


Win32
· gc.h


DOS, DOS32, Win16
· bios.h
· cerror.h
· disp.h
· dos.h
· dos.h part 2
· emm.h
· handle.h
· int.h
· msmouse.h
· sound.h
· swap.h
· tsr.h
· winio.h


Other C
· bitops.h
· conio.h
· controlc.h
· direct.h
· fltpnt.h
· io.h
· page.h
· process.h
· search.h
· sys\stat.h
· tabsize.h
· trace.h
· utime.h
· unmangle.h
· util.h


Other C++
· regexp.h
· class complex


locale.h


localeconv

Header

locale.h

Prototype

struct lconv * localeconv(void);

Description

localeconv returns a pointer to a filled-in struct lconv which contains information specific to the current country or locale. struct lconv looks like this:

struct lconv 
{ 
   char *decimal_point; 
   char *thousands_sep; 
   char *int_curr_symbol; 
   char *currency_symbol; 
   char *mon_decimal_point; 
   char *mon_thousands_sep; 
   char *negative_sign; 
   char frac_digits; 
   char p_cs_precedes; 
   char p_sep_by_space; 
   char n_cs_precedes; 
   char n_sep_by_space; 
   char n_sign_posn; 
   char lc[6]; 
}; 
The fields are:

Field/Description
decimal_point
The decimal point character for non-monetary usage.
thousands_sep
The separator in non-monetary usage to the left of the decimal point.
int_curr_symbol
The international currency symbol used in the locale.
currency_symbol
The local currency symbol.
mon_decimal_point
The decimal point character for monetary usage.
mon_thousand_sep
The separator in monetary usage to the left of the decimal point.
negative_sign
A string to indicate a negative monetary quantity.
frac_digits
The number of digits to display to the right of the decimal point for a monetary quantity.
p_cs_precedes
1 if currency_symbol is a prefix, 0 if currency_symbol is a suffix for positive monetary quantities.
p_sep_by_space
1 if currency_symbol is separated by a space from a positive monetary quantity, 0 if there is no space.
n_cs_precedes
1 if currency_symbol is a prefix, 0 if currency_symbol is a suffix for a negative monetary quantity.
n_sep_by_space
1 if currency_value is separated by a space from a negative monetary quantity, 0 if there is no space.
n_sign_posn
A value that indicates how to position negative_sign for a formatted monetary quantity.
lc[6]
The current state of the locale. LC_XXX forms the index of this array. Its values are from _LOCALE enumeration in locale.h.

Return Value

A pointer to a struct lconv. The values contained within the structure should be regarded as read only.

Compatibility

DOS Windows 3.x Phar Lap DOSX Win32

See Also

setlocale

Example

See setlocale

setlocale

Header

locale.h

Prototype

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

Description

setlocale changes locale-dependent behavior or checks on its current settings. category can be one of the following predefined constants. Digital Mars C++ supports the minimal ANSI C definition and therefore only the following constants have an effect.

Constant/Description
LC_ALL
Specifies the locale for all categories
LC_COLLATE
Change the locale for the strcoll() and strxfrm() functions
LC_CTYPE
Change the locale for the character-handling functions and the multi-byte functions.
LC_MONETARY
Change the locale for monetary formatting.
LC_NUMERIC
Change the locale for numeric formatting.
LC_TIME
Change the locale for the strftime() function.

The following locales are recognized:

Locale/Description
C
The minimal default locale.
USA
Predefined in locale.h as the "native" locale. setlocale(LC_ALL,"") selects this.

It also recognizes Italy, Netherlands, Norway, Switzerland, UK, Japan, Korea, China.

Information about the current locale can be obtained by calling setlocale with a NULL second argument. This will return the current locale for the category selected. Having set the locale, a call to localeconv will obtain a pointer to a filled in struct lconv with the specific locale values. See localeconv for details.

Return Value

A pointer containing the currently selected locale for the category specified. A NULL is returned if the locale specified is not supported.

Compatibility

DOS Windows 3.x Phar Lap DOSX Win32

See Also

localeconv

Example

	/* 	Example for setlocale */ 

	#include <locale.h> 
	#include <stdio.h> 
	#include <stdlib.h>
	#include <string.h>

	char *countries[] =
	{ 
	   "USA",
	   "ITALY", 
           "NORWAY",
	    NULL 
	}; 

	void main ()
	{ 
	   char *loc,
	   *currency; 
	   int i; 
	   struct lconv *lcptr; 
	   int money = 100; /* Something to display */ 

	/* 
	   setlocale can be called with a NULL locale to 
	   check on its current setting 
	*/ 
	   loc = setlocale (LC_ALL, NULL); 
	   printf (" The default locale is the \"%s\" 
	             locale\n", loc); 

	   for (i = 0; countries[i]; i++) 
	   { 
	      loc = setlocale (LC_ALL, countries[i]); 
	      lcptr = localeconv (); 
	      currency = malloc 
		   (strlen (lcptr-> currency_symbol) + 1); 
	      strcpy (currency, lcptr-> currency_symbol); 
	      if (loc) 
	           printf (" Monetary figure for %s locale: 
                             %s%d\n", loc, currency, money); 
	      free(currency); 
	   } 
	} 
Output

The default locale is the "C" locale
Monetary figure for USA locale: 00
Monetary figure for Italy locale: L. 100
Monetary figure for Norway locale: kr100