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

来源:互联网 发布:js调用摄像头录制视频 编辑:程序博客网 时间:2024/06/05 10:39

多字节字符集:

每个字符的编码宽度都不等,可以是一个字节,也可以是多个字节。
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

0 0