获取字符串长度的函数sizeof()、strlen()、length()、size()详解和区别

在C++中计算长度的函数有四种,它们分别是sizeof() ,size(),strlen(),str.length()

一.sizeof()和strlen()两者区别:
1)sizeof操作符的结果类型是size_t,该类型保证能容纳实现所建立的最大对象的字节大小。 
2)sizeof是运算符,strlen是函数。 
3)sizeof可以用类型做参数,strlen只能用char*做参数,且必须是以''\0''结尾的。 
4)sizeof在编译时期就计算出来,strlen在运行之后才能计算出来。

5)strlen计算字符串的具体长度(只能是字符串),不包括字符串结束符。返回的是字符个数。sizeof计算声明后所占的内存数(字节大小),不是实际长度。

举例:
1)char* ss = "0123456789";
sizeof(ss)为4,ss是指向字符串常量的字符指针,sizeof 获得的是指针所占的空间,则为4
sizeof(*ss)为1,*ss是第一个char字符,则为1


2)char ss[] = "0123456789";
sizeof(ss)为11,ss是数组,计算到'\0'位置,因此是(10+1)
sizeof(*ss)为1,*ss是第一个字符


3)char ss[100] = "0123456789";
sizeof(ss)为100,ss表示在内存中预分配的大小,100*1
strlen(ss)为10,它的内部实现用一个循环计算字符串的长度,直到'\0'为止。


4)int ss[100] = "0123456789";
sizeof(ss)为400,ss表示在内存中预分配的大小,100*4
strlen(ss)错误,strlen参数只能是char*,且必须是以'\0'结尾


5)char[] a={'a','b','c'};
sizeof(a)的值应该为3。
char[] b={"abc"};
sizeof(b)的值应该是4。


6)若string str={'a','b','c','\0','X'};
那么sizeof(str)为5,strlen(str)为3。

二.string中的length()和size()

c++中,在获取字符串长度时,size()函数与length()函数作用相同。 
例如:string str = “wang” 
则,str.length() = 4。


除此之外,size()函数还可以获取vector类型的长度。 
例如:vector < int> num(15,2) 
则,num.size() = 15。

参考:https://blog.csdn.net/z_qifa/article/details/77744482

 

  • 30
    点赞
  • 212
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
在C++中,获取字符串的长度可以使用以下四种方法: 1. `sizeof()`函数 在C++中,`sizeof()`函数用于获取数据类型或变量所占用的内存大小,单位为字节。因此,可以使用`sizeof()`函数获取字符串的长度,即字符串所占用的内存大小,包括字符串末尾的空字符('\0')。例如: ```c++ char str[] = "Hello"; int len = sizeof(str) / sizeof(char); // len = 6 ``` 需要注意的是,`sizeof()`函数返回的是编译时确定的值,因此对于动态分配的字符串,这种方法并不适用。 2. `size()`函数 在C++中,`size()`函数用于获取STL容器(如`string`)的大小,即容器中元素的个数。对于字符串,可以使用`size()`函数获取其长度。例如: ```c++ string str = "Hello"; int len = str.size(); // len = 5 ``` 需要注意的是,`size()`函数返回的是容器中元素的个数,对于字符串来说,即字符串的长度。但是,`size()`函数并不包括字符串末尾的空字符('\0')。 3. `strlen()`函数 在C++中,`strlen()`函数用于获取C风格字符串的长度,即以空字符('\0')结尾的字符数组的长度。对于字符串,可以使用`strlen()`函数获取其长度。例如: ```c++ char str[] = "Hello"; int len = strlen(str); // len = 5 ``` 需要注意的是,`strlen()`函数并不包括字符串末尾的空字符('\0')。 4. `length()`函数 在C++中,`length()`函数是`string`类的成员函数,用于获取字符串的长度。与`size()`函数功能类似,`length()`函数返回的是字符串的长度,不包括字符串末尾的空字符('\0')。例如: ```c++ string str = "Hello"; int len = str.length(); // len = 5 ``` 需要注意的是,`length()`函数只能用于`string`类,不能用于C风格字符串。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值