一段代码帮助记忆,如下:
CString str1="abcdef";
char str2[ ]={'a','b','c','d','e','f','\0'};
char str3[ ]="abcdef";
int len1=strlen(str1);
int size1=sizeof(str1);
int len2=strlen(str2);
int size2=sizeof(str2);
int len3=strlen(str3);
int size3=sizeof(str3);
CString str;
str.Format("%d %d %d %d %d %d ",len1,size1,len2,size2,len3,size3);
AfxMessageBox(str);
结果是:6 4 6 7 6 7
注:如果str2数组里面没加\0,那么strlen将会不知道在哪里结束,得到的值也是一个随机值。sizeof得到的是所占内存的字节大小,而strlen得到的是字符个数。sizeof比strlen大1,说明字符串在内存里面在最后自动加上了\0 。第二个数字是4,说明sizeof得到的是CString对象所占内存大小。