8位的ANSI字符集叫做 多字节字符集(char),而16位的Unicode叫做宽字符集(wchar_t)。Unicode是ANSI的一个超集.在字符串前加字母L表示将ANSI字符集转换成Unicode字符集。
MFC中的TEXT宏可以自动适应字符类型,如果定义了预处理器程序符号_UNICODE,那么编译器将使用Unicode字符,如果没用定义该预处理器程序符号,那么编译器将使用ANSI字符。将字符声明为TCHAR类型,而不是char或wchar_t类型。如果定义了_UNICODE符号TCHAR将变为wchar_t类型。如果没用定义_UNICODE符号,TCHAR将变为普通古老的char类型。或者使用更佳的LPTSTR(指向TCHAR字符串的指针)。
1、统计宽字节字符串长度,使用wcslen()函数:
wchar_t* p = "bbbb";
int num = wsclen(p);
2、char*与CString的相互转换:
//char*转换为CString
char* p = "wangmumu";
CString str = CString(p);
//CString转换为char*
TCHAR ch = 'a';
CString tmp; //临时变量
CString str(ch);
tmp = str;
char* p = tmp.GetBuffer();
//说明:String和CString无法直接转换,只能通过chat* 中转后才能转换