Owed by: 春夜喜雨 http://blog.csdn.net/chunyexiyu 转载请标明来源
1. 存储
Ansi存储的时候使用char
Unicode存储的时候使用wchar_t
Ansi/Unicode均支持的时候用TCHAR
2. 相关的字符串函数,字符串转数字相关的
atoi char使用
_wtoi w_char_t使用
_ttoi TCHAR使用
这篇文章介绍CString/string/char*/w_char/char之间的转换:
http://blog.163.com/xubin_3@126/blog/static/1129877022009111583134670/
unicode转utf8: utf8转unicode. 调用::MultiByteToWideChar
http://www.cnblogs.com/gakusei/articles/1585211.html
http://www.cppblog.com/sunraiing9/archive/2007/03/21/20281.html
3. GetBuffer讲解:
http://blog.csdn.net/lewutian/article/details/6787024
http://blog.csdn.net/guanchanghui/article/details/1217096
4. 参见Locale|区域设置的说明
(引用自:http://technet.microsoft.com/zh-cn/library/wyzd2bce.aspx)
区域设置:是指您可以使用自定义程序的国家/地区和语言设置。一些与区域设置相关的类别包括日期和货币值的显示格式。有关更多信息,请参见区域设置类别。
当使用函数,而无需 _l后缀时,请使用setlocale功能更改或查询部分或全部当前程序或线程区域设置信息。与 _l后缀的功能将使用仅在该特定功能的执行过程中传递的。这些区域设置信息区域设置参数。用与 _l后缀的函数创建一个区域设置用于,请使用_create_locale。若要释放该区域设置,请使用_free_locale。获取当前区域设置,使用_get_current_locale。
使用 _configthreadlocale 控件每个线程是否有其自己的区域设置,或者在程序中的所有线程共享同一区域设置。有关更多信息,请参见区域设置和代码页。
函数的更安全版本下表中可用,指示由 _s (“安全”)后缀。有关更多信息,请参见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 |
是实例 |
测试特定条件的特定整数。 |
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 |
_mbclen, mblen, _mblen_l |
验证并返回字节数在多字节字符的 |
LC_CTYPE |
strlen, strlen_l, wcslen, wcslen_l, _mbslen, _mbslen_l, _mbstrlen, _mbstrlen_l |
为多字节字符字符串:验证在字符串中的每个字符;返回字符串的长度 |
LC_CTYPE |
mbstowcs, _mbstowcs_l,mbstowcs_s, _mbstowcs_s_l |
转换多字节字符序列转换为宽字符对应的顺序 |
LC_CTYPE |
mbtowc, _mbtowc_l |
转换多字节字符转换为相应的宽字符 |
LC_CTYPE |
printf功能 |
编写格式化输出 |
LC_NUMERIC (确定基数字符输出) |
scanf功能 |
读取的格式化输入 |
LC_NUMERIC (确定基数字体标识) |
setlocale, _wsetlocale |
为程序选择区域设置 |
不适用 |
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, _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_l, wcstod, _wcstod_l |
将字符串转换为 double值 |
LC_NUMERIC (确定基数字体标识) |
strtol, wcstol, _strtol_l, _wcstol_l |
将字符串转换为 long值 |
LC_NUMERIC (确定基数字体标识) |
strtoul, _strtoul_l, wcstoul, _wcstoul_l |
将字符串转换为无符号 long值 |
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 |
strxfrm, wcsxfrm, _strxfrm_l, _wcsxfrm_l |
转换字符串转换为排列的基于窗体区域设置 |
LC_COLLATE |
tolower, _tolower, towlower, _tolower_l, _towlower_l,_mbctolower, _mbctolower_l, _mbctoupper, _mbctoupper_l |
转换特定字符转换为相应的小写字母 |
LC_CTYPE |
toupper, _toupper, towupper, _toupper_l, _towupper_l,_mbctolower, _mbctolower_l, _mbctoupper, _mbctoupper_l |
转换特定字符转换为相应的大写字母 |
LC_CTYPE |
wcstombs, _wcstombs_l,wcstombs_s, _wcstombs_s_l |
将宽字符序列分成多字节字符对应的顺序 |
LC_CTYPE |
wctomb, _wctomb_l,wctomb_s, _wctomb_s_l |
宽字符转换为相应的多字节字符 |
LC_CTYPE |
说明 |
||
为多字节实例,多字节代码页绑定等效于区域设置与setlocale。_setmbcp,与_MB_CP_LOCALE的参数进行多字节代码页与相同 setlocale代码页的。 |