size()、length ()和sizeof()的区别

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。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 题目类型 a.C++与C差异(1-18) 1.C和C++中struct有什么区别? C没有Protection行为...
    阿面a阅读 7,764评论 0 10
  • 前言: 详细介绍: List:元素有放入顺序,元素可重复Map:元素按键值对存储,无放入顺序Set:元素无放入顺序...
    YBshone阅读 8,776评论 0 17
  • 一、(一共三十题) 1.main() { int a[5]={1,2,3,4,5}; int *ptr=(int ...
    iOS_Alex阅读 1,010评论 0 0
  • 一、(一共三十题) 1.main() { int a[5]={1,2,3,4,5}; int *ptr=(int ...
    iOS_Alex阅读 773评论 0 2
  • C++运算符重载-下篇 本章内容:1. 运算符重载的概述2. 重载算术运算符3. 重载按位运算符和二元逻辑运算符4...
    Haley_2013阅读 1,492评论 0 49