********************2021时隔六年更新一下***********************
很久没登CSDN博客啦,好多人骂我哈哈,我更新一下,三年没写代码量手生了。
17年毕业在搞了两年研发,搞了一年产品报价,搞了一年渠道管理,现在有点迷茫……
言归正传,又跑了一遍。除了构造函数有点没写好之外,最后的结论我和当初写的一样的呀。
为啥每年都有人骂我呢?
#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。