Windows程序设计--宽字节和多字节

多字节字符集:

每个字符的编码宽度都不等,可以是一个字节,也可以是多个字节。
1)ASCII字符只占用一个字节;

2)对于中文、日文等象形文字,一个字符占用两个字节。

sizeof("12你好"); //7. \0算上
strlen("12你好"); //6

缺点:每次查找,都需要从头到尾扫描,以确定字符,效率低。
有点:节省内存。


宽字节字符集:

每个字符的编码宽度都相等,均是两个字节。
1)ASCII字符占用扩充为两个字节,在原先的字节前补充一个字节0x00 ;
2)结束符为两个\0 ;
3)字符串的解释都是以两个字符为单位进行解释,所以查找速度快。

sizeof("12你好"); //10. \0算上
wcslen("12你好"); //8

缺点:内存占用偏大
优点:查找速度快


兼容多字节和宽字节字符集:

#ifdef _UNICODE
	#define _tcslen wcslen
	#define TCHAR   wchar_t
	#define LPTSTR  wchar_t*
	#define _T(x)   L##x
#else
	#define _tcslen strlen
	#define TCHAR   char
	#define LPTSTR  char*
	#define _T(x)   x
#endif

小技巧:所有以前以str开头的字符串函数,在通用字符类型中str被替换为_tcs,在宽字节字符中str被替换为wcs

你可能感兴趣的:(Windows,C/C++)