区域设置

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

在使用不带 setlocale 后缀的函数时,可使用 _l 函数来更改或查询当前的程序或线程区域设置信息的一部分或全部。 带有 _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
%> 测试前导字节 LC_CTYPE
localeconv 读取合适的值来格式化数字量 LC_MONETARY, LC_NUMERIC
MB_CUR_MAX 当前区域设置中任何多字节字符的最大长度(字节数)(STDLIB.H 中定义的宏) LC_CTYPE
_mbccpy、、_mbccpy_l_mbccpy_s、、 _mbccpy_s_l 复制一个多字节字符 LC_CTYPE
.- . 验证并返回多字节字符中的字节数 LC_CTYPE
strlen, wcslen, _mbslen, _mbslen_l, _mbstrlen, _mbstrlen_l 对于多字节字符串:验证字符串中的每个字符;返回字符串的长度 LC_CTYPE
mbstowcs、、_mbstowcs_lmbstowcs_s、、 _mbstowcs_s_l 将多字节字符序列转换为对应的宽字符序列 LC_CTYPE
%> 将多字节字符转换为对应的宽字符 LC_CTYPE
printf 函数 写入格式化的输出 LC_NUMERIC(确定基数字符输出)
scanf 函数 读取格式化的输入 LC_NUMERIC (确定基数字符标识)
%> 选择程序的区域设置 不适用
strcoll, wcscoll, _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
strftime, wcsftime, _strftime_l, _wcsftime_l 根据提供的 format 参数设置日期和时间值的格式 LC_TIME
_strlwr、、_wcslwr_strlwr_l_mbslwr_wcslwr_l_mbslwr_l_strlwr_s_strlwr_s_l_mbslwr_s_mbslwr_s_l、、 _wcslwr_s_wcslwr_s_l 将给定字符串中的每个大写字母就地转换为小写字母 LC_CTYPE
strtod, _strtod_l, wcstod, _wcstod_l 将字符串转换为 double LC_NUMERIC (确定基数字符标识)
strtol, wcstol, _strtol_l, _wcstol_l 将字符串转换为 long LC_NUMERIC (确定基数字符标识)
strtoul, _strtoul_l, wcstoul, _wcstoul_l 将字符串转换为无符号长值 LC_NUMERIC (确定基数字符标识)
_strupr、、_strupr_l_mbsupr_l_mbsupr_wcsupr_l_wcsupr_strupr_s_strupr_s_l_mbsupr_s_mbsupr_s_l、、 _wcsupr_s_wcsupr_s_l 将字符串的每个小写字母就地转换为大写字母 LC_CTYPE
strxfrm, wcsxfrm, _strxfrm_l, _wcsxfrm_l 根据区域设置将字符串转换为排序格式 LC_COLLATE
tolower、、_tolower_tolower_ltowlower_towlower_l_mbctolower_mbctolower_l、、 _mbctoupper_l_mbctoupper 将给定的字符转换为相应的小写字母 LC_CTYPE
toupper、、_toupper_toupper_ltowupper_towupper_l_mbctolower_mbctolower_l、、 _mbctoupper_l_mbctoupper 将给定的字符转换为相应的大写字母 LC_CTYPE
wcstombs、、_wcstombs_lwcstombs_s、、 _wcstombs_s_l 将宽字符序列转换为相应的多字节字符序列 LC_CTYPE
wctomb、、_wctomb_lwctomb_s、、 _wctomb_s_l 将宽字符转换为相应的多字节字符 LC_CTYPE

注意

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

另请参阅

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