Locale
Locale refers to country/region and language settings that you can use to customize your program. Some locale-dependent categories include the display formats for dates and monetary values. For more information, see Locale categories.
Use the setlocale
function to change or query some or all of the current program or thread locale information while using functions without the _l
suffix. The functions with the _l
suffix will use the locale parameter passed in for their locale information during the execution of that specific function only. To create a locale for use with a function with a _l
suffix, use _create_locale
. To free this locale, use _free_locale
. To get the current locale, use _get_current_locale
.
Use _configthreadlocale
to control whether each thread has its own locale, or all threads in a program share the same locale. For more information, see Locales and code pages.
More secure versions of the functions in the following table are available, indicated by the _s
("secure") suffix. For more information, see Security features in the CRT.
Locale-dependent routines
Routine | Use | setlocale category setting dependence |
---|---|---|
atof , _atof_l , _wtof , _wtof_l |
Convert character to floating-point value | LC_NUMERIC |
atoi , _atoi_l , _wtoi , _wtoi_l |
Convert character to integer value | LC_NUMERIC |
_atoi64 , _atoi64_l , _wtoi64 , _wtoi64_l |
Convert character to 64-bit integer value | LC_NUMERIC |
atol , _atol_l , _wtol , _wtol_l |
Convert character to long value | LC_NUMERIC |
_atodbl , _atodbl_l , _atoldbl , _atoldbl_l , _atoflt , _atoflt_l |
Convert character to double-long value | LC_NUMERIC |
is , isw routines |
Test given integer for particular condition. | LC_CTYPE |
isleadbyte , _isleadbyte_l |
Test for lead byte | LC_CTYPE |
localeconv |
Read appropriate values for formatting numeric quantities | LC_MONETARY, LC_NUMERIC |
MB_CUR_MAX |
Maximum length in bytes of any multibyte character in current locale (macro defined in STDLIB.H ) |
LC_CTYPE |
_mbccpy , _mbccpy_l ,_mbccpy_s , _mbccpy_s_l |
Copy one multibyte character | LC_CTYPE |
_mbclen , mblen , _mblen_l |
Validate and return number of bytes in multibyte character | LC_CTYPE |
strlen , wcslen , _mbslen , _mbslen_l , _mbstrlen , _mbstrlen_l |
For multibyte-character strings: validate each character in string; return string length | LC_CTYPE |
mbstowcs , _mbstowcs_l ,mbstowcs_s , _mbstowcs_s_l |
Convert sequence of multibyte characters to corresponding sequence of wide characters | LC_CTYPE |
mbtowc , _mbtowc_l |
Convert multibyte character to corresponding wide character | LC_CTYPE |
printf functions |
Write formatted output | LC_NUMERIC (determines radix character output) |
scanf functions |
Read formatted input | LC_NUMERIC (determines radix character recognition) |
setlocale , _wsetlocale |
Select locale for program | Not applicable |
strcoll , wcscoll , _mbscoll , _strcoll_l , _wcscoll_l , _mbscoll_l |
Compare characters of two strings | LC_COLLATE |
_stricmp , _wcsicmp , _mbsicmp , _stricmp_l , _wcsicmp_l , _mbsicmp_l |
Compare two strings without regard to case | LC_CTYPE |
_stricoll , _wcsicoll , _mbsicoll , _stricoll_l , _wcsicoll_l , _mbsicoll_l |
Compare characters of two strings (case insensitive) | LC_COLLATE |
_strncoll , _wcsncoll , _mbsncoll , _strncoll_l , _wcsncoll_l , _mbsncoll_l |
Compare first n characters of two strings |
LC_COLLATE |
_strnicmp , _wcsnicmp , _mbsnicmp , _strnicmp_l , _wcsnicmp_l , _mbsnicmp_l |
Compare characters of two strings without regard to case. | LC_CTYPE |
_strnicoll , _wcsnicoll , _mbsnicoll , _strnicoll_l , _wcsnicoll_l , _mbsnicoll_l |
Compare first n characters of two strings (case insensitive) |
LC_COLLATE |
strftime , wcsftime , _strftime_l , _wcsftime_l |
Format date and time value according to supplied format argument |
LC_TIME |
_strlwr , _wcslwr , _mbslwr , _strlwr_l , _wcslwr_l , _mbslwr_l ,_strlwr_s , _strlwr_s_l , _mbslwr_s , _mbslwr_s_l , _wcslwr_s , _wcslwr_s_l |
Convert, in place, each uppercase letter in given string to lowercase | LC_CTYPE |
strtod , _strtod_l , wcstod , _wcstod_l |
Convert character string to double value |
LC_NUMERIC (determines radix character recognition) |
strtol , wcstol , _strtol_l , _wcstol_l |
Convert character string to long value |
LC_NUMERIC (determines radix character recognition) |
strtoul , _strtoul_l , wcstoul , _wcstoul_l |
Convert character string to unsigned long value | LC_NUMERIC (determines radix character recognition) |
_strupr , _strupr_l , _mbsupr , _mbsupr_l , _wcsupr_l , _wcsupr ,_strupr_s , _strupr_s_l , _mbsupr_s , _mbsupr_s_l , _wcsupr_s , _wcsupr_s_l |
Convert, in place, each lowercase letter in string to uppercase | LC_CTYPE |
strxfrm , wcsxfrm , _strxfrm_l , _wcsxfrm_l |
Transform string into collated form according to locale | LC_COLLATE |
tolower , _tolower , towlower , _tolower_l , _towlower_l ,_mbctolower , _mbctolower_l , _mbctoupper , _mbctoupper_l |
Convert given character to corresponding lowercase character | LC_CTYPE |
toupper , _toupper , towupper , _toupper_l , _towupper_l ,_mbctolower , _mbctolower_l , _mbctoupper , _mbctoupper_l |
Convert given character to corresponding uppercase letter | LC_CTYPE |
wcstombs , _wcstombs_l ,wcstombs_s , _wcstombs_s_l |
Convert sequence of wide characters to corresponding sequence of multibyte characters | LC_CTYPE |
wctomb , _wctomb_l ,wctomb_s , _wctomb_s_l |
Convert wide character to corresponding multibyte character | LC_CTYPE |
Note
For multibyte routines, the multibyte code page must be equivalent to the locale set with setlocale
. _setmbcp
, with an argument of _MB_CP_LOCALE
makes the multibyte code page the same as the setlocale
code page.
See also
Internationalization
Universal C runtime routines by category