strlen(char *)和str.length()以及str.size()的区别

来源:互联网 发布:linux用户和组 编辑:程序博客网 时间:2024/05/04 18:59

strlen(char *):

C语言函数,参数为char *,用来求字符数组的长度。

#include<stdio.h>
#include<cstring>
int main()
{
char*s="Nice to meet you!";
printf("%s has %d chars\n",s,strlen(s));
return 0;
}

输出:Nice to meet you! has 17 chars


str.length()和str.size():

用于求string类对象长度的成员函数

#include<iostream>
#include<string>
using namespace std;

int main()
{
string str="blabla";
cout<<str.length()<<endl;
cout<<str.size()<<endl;
return 0;
}

输出:

6

6

注意:#include<string.h>和#include<cstring>以及#include<string>的区别

#include<string.h>和#include<cstring>都是C语言的头文件,#include<string>为C++的头文件


strlen和sizeof的区别:


1.sizeof操作符的结果类型是size_t,它在头文件中typedef为unsigned int类型。
该类型保证能容纳实现所建立的最大对象的字节大小。 

2.sizeof是算符,strlen是函数。 

3.sizeof可以用类型做参数,strlen只能用char*做参数,且必须是以''\0''结尾的。
sizeof还可以用函数做参数,比如: 
short f();
printf("%d\n", sizeof(f()));
输出的结果是sizeof(short),即2。 

4.数组做sizeof的参数不退化,传递给strlen就退化为指针了。 

5.大部分编译程序 在编译的时候就把sizeof计算过了 是类型或是变量的长度这就是sizeof(x)可以用来定义数组维数的原因 
char str[20]="0123456789";
int a=strlen(str); //a=10;
int b=sizeof(str); //而b=20;

6.strlen的结果要在运行的时候才能计算出来,时用来计算字符串的长度,不是类型占内存的大小。 

#include<iostream>
#include<string>
using namespace std;


int main()
{
char * ss = "12345678";
int a=sizeof(ss);
int b=strlen(ss);
cout<<a<<" "<<b<<endl;
}

输出:

4

8

0 0