区域设置

区域设置指你可以用来自定义程序的国家/地区和语言设置。 一些与区域设置相关的类别包括日期和货币值的显示格式。 有关详细信息,请参阅区域设置类别

在使用不带 _l 后缀的函数时,可使用 setlocale 函数来更改或查询当前的程序或线程区域设置信息的一部分或全部。 带有 _l 后缀的函数仅在其执行过程中使用传入的区域设置参数来获取区域设置信息。 若要创建用于带有 _l 后缀的函数的区域设置,请使用 _create_locale。 若要释放此区域设置,请使用 _free_locale。 若要获取当前区域设置,请使用 _get_current_locale

使用 _configthreadlocale 可控制是每个线程都有自己的区域设置,还是程序中的所有线程都共享同一区域设置。 有关详细信息,请参阅区域设置和代码页

下表中的函数还有更安全的版本,由 _s(“secure”)后缀指示。 有关详细信息,请参阅 CRT 中的安全功能

依赖区域设置的例程

例程 使用 setlocale 类别设置依赖项
atof_atof_l_wtof_wtof_l 将字符转换为浮点值 LC_NUMERIC
atoi_atoi_l_wtoi_wtoi_l 将字符转换为整数值 LC_NUMERIC
_atoi64_atoi64_l_wtoi64_wtoi64_l 将字符转换为 64 位整数值 LC_NUMERIC
atol_atol_l_wtol_wtol_l 将字符转换为长值 LC_NUMERIC
_atodbl_atodbl_l_atoldbl_atoldbl_l_atoflt_atoflt_l 将字符转换为长双精度值 LC_NUMERIC
is, isw 例程 针对特定条件测试给定整数。 LC_CTYPE
isleadbyte_isleadbyte_l 测试前导字节 LC_CTYPE
localeconv 读取合适的值来格式化数字量 LC_MONETARY, LC_NUMERIC
MB_CUR_MAX 当前区域设置中任何多字节字符的最大长度(字节数)(STDLIB.H 中定义的宏) LC_CTYPE
_mbccpy_mbccpy_l_mbccpy_s_mbccpy_s_l 复制一个多字节字符 LC_CTYPE
_mbclenmblen_mblen_l 验证并返回多字节字符中的字节数 LC_CTYPE
strlenwcslen_mbslen_mbslen_l_mbstrlen_mbstrlen_l 对于多字节字符串:验证字符串中的每个字符;返回字符串的长度 LC_CTYPE
mbstowcs_mbstowcs_lmbstowcs_s_mbstowcs_s_l 将多字节字符序列转换为对应的宽字符序列 LC_CTYPE
mbtowc_mbtowc_l 将多字节字符转换为对应的宽字符 LC_CTYPE
printf 函数 写入格式化的输出 LC_NUMERIC(确定基数字符输出)
scanf 函数 读取格式化的输入 LC_NUMERIC (确定基数字符标识)
setlocale_wsetlocale 选择程序的区域设置 不适用
strcollwcscoll_mbscoll_strcoll_l_wcscoll_l_mbscoll_l 比较两个字符串的字符 LC_COLLATE
_stricmp_wcsicmp_mbsicmp_stricmp_l_wcsicmp_l_mbsicmp_l 比较两个字符串(不考虑大小写) LC_CTYPE
_stricoll_wcsicoll_mbsicoll_stricoll_l_wcsicoll_l_mbsicoll_l 比较两个字符串的字符(不区分大小写) LC_COLLATE
_strncoll_wcsncoll_mbsncoll_strncoll_l_wcsncoll_l_mbsncoll_l 比较两个字符串的第一个 n 字符 LC_COLLATE
_strnicmp_wcsnicmp_mbsnicmp_strnicmp_l_wcsnicmp_l_mbsnicmp_l 比较两个字符串的字符(不考虑大小写)。 LC_CTYPE
_strnicoll_wcsnicoll_mbsnicoll_strnicoll_l_wcsnicoll_l_mbsnicoll_l 比较两个字符串的第一个 n 字符(不区分大小写) LC_COLLATE
strftimewcsftime_strftime_l_wcsftime_l 根据提供的 format 参数设置日期和时间值的格式 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 将给定字符串中的每个大写字母就地转换为小写字母 LC_CTYPE
strtod_strtod_lwcstod_wcstod_l 将字符串转换为 double LC_NUMERIC (确定基数字符标识)
strtolwcstol_strtol_l_wcstol_l 将字符串转换为 long LC_NUMERIC (确定基数字符标识)
strtoul_strtoul_lwcstoul_wcstoul_l 将字符串转换为无符号长值 LC_NUMERIC (确定基数字符标识)
_strupr_strupr_l_mbsupr_mbsupr_l_wcsupr_l_wcsupr,_strupr_s_strupr_s_l_mbsupr_s_mbsupr_s_l_wcsupr_s_wcsupr_s_l 将字符串的每个小写字母就地转换为大写字母 LC_CTYPE
strxfrmwcsxfrm_strxfrm_l_wcsxfrm_l 根据区域设置将字符串转换为排序格式 LC_COLLATE
tolower_tolowertowlower_tolower_l_towlower_l,_mbctolower_mbctolower_l_mbctoupper_mbctoupper_l 将给定的字符转换为相应的小写字母 LC_CTYPE
toupper_touppertowupper_toupper_l_towupper_l,_mbctolower_mbctolower_l_mbctoupper_mbctoupper_l 将给定的字符转换为相应的大写字母 LC_CTYPE
wcstombs_wcstombs_lwcstombs_s_wcstombs_s_l 将宽字符序列转换为相应的多字节字符序列 LC_CTYPE
wctomb_wctomb_lwctomb_s_wctomb_s_l 将宽字符转换为相应的多字节字符 LC_CTYPE

注意

对于多字节例程,多字节代码页必须与使用 setlocale 设置的区域设置等效。 带有 _MB_CP_LOCALE 参数的 _setmbcp 使多字节代码页与 setlocale 代码页相同。

另请参阅

国际化
按类别分的通用 C 运行时例程