700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > C++求字符串长度————sizeof() size() strlen()以及length()详解

C++求字符串长度————sizeof() size() strlen()以及length()详解

时间:2020-12-18 01:03:27

相关推荐

C++求字符串长度————sizeof() size() strlen()以及length()详解

区分sizeof()、size()、strlen()以及length()以及如何使用

一、区分sizeof()和strlen()

首先,sizeof()【操作数所占空间的字节数大小】是一种c中的基本运算符。(是操作符,并不是函数)可以以类型、指针、数组和函数等作为参数。

它的功能是:获得保证能容纳实现所建立的最大对象的字节大小。由于在编译时计算,因此sizeof() 不能用来返回动态分配的内存空间的大小

char str[30];gets(str);//输入strcout<<sizeof(str)<<endl;

这里,如果我输入“Hello”,那么输出的结果会是什么呢?5?还是6?

没错,输出的结果是30,因为sizeof()在该段程序中的作用是计算字符数组str所占空间字节数的大小,而字符数组str在创建时,系统自动给他分配了30个空间字节,所以无论输入什么(前提是不超过字符数组的范围),输出结果都会是30。(这一点也侧面说明了sizeof()其值在编译时即计算好了

而相比较于sizeof()strlen()是一种函数,用于计算字符串的长度,(只能计算字符串),‘\0’作为终止符,返回的长度大小不包括’\0’,并且 strlen 的结果是运行的时候才出来(不是编译期求值)

char str[30];gets(str);cout<<strlen(str)<<endl;

这里,我们输入“Hello”,那么输出的结果就会是5,即字符数组str的长度。

strlen函数求得的字符串长度是从字符串第一个元素到第一个’\0’之间元素的个数sizeof求得的结果是存储该字符串的变量占用的空间大小,因而一定会包括’\0’.若’\0’后还有空余的空间,也会包含到结果里面

二、size()函数以及length()函数

C++中,在获取字符串长度时,size()函数与length()函数作用相同。

string str;cin>>str;cout<<str.size()<<endl;cout<<str.length()<<endl;

这里,我们同样还是输入字符串“Hello”,两个函数结果都为5。

总结:

sizeof()可以以类型、指针、数组和函数等作为参数,其值在编译时计算,用于获取操作数所占空间的字节数大小。strlen()函数其参数只能为char*(字符型指针),所以在计算字符数组(char str[ ])时,一般用strlen()函数(也只能用于计算字符数组了)。size()函数以及length()函数都用于计算字符串(string)长度,不能用char*作为参数。除此之外,size()函数还可以获取vector类型的长度。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。