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