在编程中有时长需要判断一个数组的长度。
c/c++
strlen(str)和str.length()和str.size()都可以求字符串长度。
其中str.length()和str.size()是用于求string类对象的成员函数
strlen(str)是用于求字符数组的长度,其参数是char*。
(1) 首先说明string中成员函数length()和size()。它们的功能一样返回字符串(只能是字符串,字符不可以使用)的长度,单位是字节。
(2)strlen(…)是函数,要在运行时才能计算。参数必须是字符型指针(char*)。当数组名作为参数传入时,实际上数组就退化成指针了。
它的功能是:返回字符串的长度。该字符串可能是自己定义的,也可能是内存中随机的,该函数实际完成的功能是从代表该字符串的第一个地址开始遍历,直到遇到结束符’\0’。返回的长度大小不包括’\0’。
如图所示:m【】和b【】的长度本应都是5,但是strlen()使用输出的为2。(这是strlen()函数的缺陷,遇到’\0‘就结束)。
(3)如何求整形数组的长度呢,需要用到sizeof()函数进行使用。
#include<bits/stdc++.h>
using namespace std;
//求数组的长度
template <typename T>
int count(T& n)
{
int s1=sizeof(n);
int s2=sizeof(n[0]);
return s1/s2;
}
int main()
{
int a[]={1,2,3};
char m[]={'a','b','\0','c','d'};
char b[]={"ab\0c"};
string c="asdasddddda";
cout<<count(a)<<endl; //整形数组的长度
cout<<count(m)<<endl; //字符行数组的长度
cout<<c.size()<<endl; //字符串数组的长度可用size()或length()函数来求
cout<<strlen(b)<<endl; //strlen()函数可用来求字符数组的长度。
cout<<sizeof(b)<<""<<sizeof('a')<<sizeof("a"); //b的大小是5, "a"是字符串,包含'a和'\0'.返回的是2
cout<<sizeof(c); //其等于string类的大小。
return 0;
}