C++的字符串长度获取办法 六年后更新—为啥这么多人骂我

 ********************2021时隔六年更新一下***********************

很久没登CSDN博客啦,好多人骂我哈哈,我更新一下,三年没写代码量手生了。

17年毕业在搞了两年研发,搞了一年产品报价,搞了一年渠道管理,现在有点迷茫……

 

言归正传,又跑了一遍。除了构造函数有点没写好之外,最后的结论我和当初写的一样的呀。

为啥每年都有人骂我呢?

 

 

代码在线运行 - 在线工具 (tool.lu)

 

#include <iostream>
#include <stdlib.h>
#include <stdio.h>
#include <string>

#include <cstring>
 
using namespace std;

int main()
{
char a[]={'a','b','c'};
 //sizeof(a)的值应该为3。
char b[]={"abc"};
//sizeof(b)的值应该是4。
char str[]={'a','b','c','\0','X'};
//那么sizeof(str)为5,strlen(str)为3。

    
 std::cout << "Hello World"<<endl<<sizeof(a)<<endl<<sizeof(b)<<endl<<sizeof(str)<<endl<<strlen(str);
    return 0;
}

 

********************分割线一下为2015历史************************

  最近在做一些程序题目,需要获取字符串长度。

有这么几个函数,却不知道区别。sizeof() 、strlen()、str.length();

 

(C/C++ strlen(str)和str.length()和str.size()都可以求字符串长度。

其中str.length()和str.size()是用于求string类对象的成员函数

strlen(str)是用于求字符数组的长度,其参数是char*。)

 

    第一种:strlen(char*)函数求的是字符串的实际长度,它求得方法是从开始到遇到第一个'\0',如果你只定义没有给它赋初值,这个结果是不定的,它会从aa首地址一直找下去,直到遇到'\0'停止。

    第二种:sizeof(),求所占总空间的字节数。

这里例如

char[] a={'a','b','c'};

sizeof(a)的值应该为3。

char[] b={"abc"};

sizeof(b)的值应该是4。

若string str={'a','b','c','\0','X'};

那么sizeof(str)为5,strlen(str)为3。

 

  • 12
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 23
    评论
评论 23
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小马工匠坊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值