一、sizeof()
返回实际长度,即所占字节数,通过计算获取长度;
int型数组只可使用sizeof()获取长度.(vector可使用size()获取)
一维数组:
int list[] = { 2,4,1,3,5 };
int length = sizeof(list) / sizeof(list[0]);
二维数组:
int list2[][2] = { {2,4},{1,3},{5,0} };
int length2 = sizeof(list2) / sizeof(list2[0]); //行数
int length3 = sizeof(list2) / sizeof(list2[0][0]); //元素个数
int length4 = sizeof(list2[0]) / sizeof(list2[0][0]); //每行元素个数
多维度以此类推。
二、size()和length()
返回字符串长度,不包括 “\0”;
size()函数是为了STL的兼容问题才出现的,所以size()可以用于vector容器;
length()在c语言中就有了,只能用于获取字符串长度;
size()与length()源码一致;
char类型数组不能使用size()、length(),只能使用strlen().
三、strlen()
返回字符串长度,参数只能为char*;
以“\0”为终止符,因此该char数组必须以''/0''结尾.
//from https://blog.csdn.net/hannea/article/details/25102727
char mail[100]="haha";
cout<< "strlen(mail): "<< strlen(mail)<<endl;
char *psd;
psd="lalala";
cout<< "strlen(psd): " << strlen(psd)<<endl;
四、总结
int型:arr.sizeof(),vector可以使用size();
char型:strlen(str),以“\0”为终止符;
string型:str.size()和str.length().
参考:
(16条消息) C/C++ strlen(str)和str.length()和str.size()的区别_Hannea007的博客-CSDN博客(16条消息) 1.27【日结】C/C++ strlen(str)和str.length()和str.size()的区别_从零开始的小栗子的博客-CSDN博客_str.legth不能用