UNICODE环境下,CString定义比较特殊,例如:
定义如下(编译环境vs2010):
CString uniStr1=_T(“FuShanE”);// uniStr1.GetLength()=43
CString uniStr2=_T(“FuShanE”);;// uniStr1.GetLength()=51
uniStr1!=uniStr2,因为按照UNICODE去解释,一个字母要占两个字节,字符串“FuShanE"只有一个结束符'\0',所以后面没申请的内存空间也被占用解释成字符,直到遇到两个'\0,所以计算出的长度是不定的,正确用法如下(通过构造函数赋值):
CString uniStr1=CString(_T(“FuShanE”));// uniStr1.GetLength()=7
CString uniStr2=CString(_T(“FuShanE”));;// uniStr1.GetLength()=7