size()、length ()和sizeof()的区别
1个回答
展开全部
1、size()是取字符串长度的,跟length()用法相同。
例如:string str="0123456789";
cout <<"str.length()="<<str.length()<<endl; //结果为10
cout <<"str.size()="<<str.size()<<endl; //10
为了兼容,这两个函数一样。 length()是因为沿用C语言的习惯而保留下来的,string类最初只有length(),引入STL之后,为了兼容又加入了size(),它是作为STL容器的属性存在的,便于符合STL的接口规则,以便用于STL的算法。string类 的size()/length()方法返回的是字节数,不管是否有汉字。
2、sizeof
sizeof(...)是运算符,其值在编译时即计算好了,参数可以是数组、指针、类型、对象、函数等。
它的功能是:获得保证能容纳实现所建立的最大对象的字节大小。由于在编译时计算,因此sizeof不能用来返回动态分配的内存空间的大小。
例如:1)char* ss = "012345678";
sizeof(ss)为4,ss是指向字符串常量的字符指针,sizeof 获得的是指针所占的空间,则为4
sizeof(*ss)为1,*ss是第一个char字符,则为1。
例如:string str="0123456789";
cout <<"str.length()="<<str.length()<<endl; //结果为10
cout <<"str.size()="<<str.size()<<endl; //10
为了兼容,这两个函数一样。 length()是因为沿用C语言的习惯而保留下来的,string类最初只有length(),引入STL之后,为了兼容又加入了size(),它是作为STL容器的属性存在的,便于符合STL的接口规则,以便用于STL的算法。string类 的size()/length()方法返回的是字节数,不管是否有汉字。
2、sizeof
sizeof(...)是运算符,其值在编译时即计算好了,参数可以是数组、指针、类型、对象、函数等。
它的功能是:获得保证能容纳实现所建立的最大对象的字节大小。由于在编译时计算,因此sizeof不能用来返回动态分配的内存空间的大小。
例如:1)char* ss = "012345678";
sizeof(ss)为4,ss是指向字符串常量的字符指针,sizeof 获得的是指针所占的空间,则为4
sizeof(*ss)为1,*ss是第一个char字符,则为1。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询