字符串和数组的长度 java c++
字符串长度
c++
C++ strlen(str)、str.length()、str.size()、sizeof(str)都可以求字符串长度。
一. 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。
java
字符串名.length()
数组长度
c++
C++中没有提供 直接获取数组长度的函数,对于存放字符串的字符数组提供了一个strlen函数获取长度,那么对于其他类型的数组如何获取他们的长度呢?其中一种方法是使 用sizeof(array) / sizeof(array[0]), 在C语言中习惯上在 使用时都把它定义成一个宏,比如#define GET_ARRAY_LEN(array,len) {len = (sizeof(array) / sizeof(array[0]));} 。而在C++中则可以使用模板 技术定义一个函数,比如:
template
int getArrayLen(T& array)
{
return (sizeof(array) / sizeof(array[0]));
}
这样对于不同类型的数 组都可以使用这个宏或者这个函数来获取数组的长度了。以下是两个Demo程序,一个C语言的,一个C++的:
P.S:若数组为存储 字符串的字符数组,则所求得的长度还需要减一,即对于宏定义: #define GET_ARRAY_LEN(array,len) {len = (sizeof(array) / sizeof(array[0]) - 1 );} ,对于函数定义:
template
int getArrayLen(T& array)
{
return (sizeof(array) / sizeof(array[0]) - 1);
}
原因为存储字符串的字符数组末尾有一个’\0’字符,需要去掉它。
java
数组名.length
字符串和数组的长度 java c++相关推荐
- 【java json基础】字符串转json json转字符串 json数组转换 【java基础知识】【实用】【一看就会】
原文:[java json基础]字符串转json json转字符串 json数组转换 [java基础知识][实用][一看就会] 读书就是:从薄读厚,再从厚读薄的过程. 文比较长,各讲述如下: 若是新手 ...
- ---已搬运--:[0CTF 2016]piapiapia -----代码审计+字符串逃逸+数组绕过长度限制+以及一下小知识点 preg_match()用数组,而且注意if是正确判断,还是错误判断
目录: 00000.知识点: 1.url传入数组绕过长度限制?? 2.数组的遍历 3.数组绕过正则 一.自己做: 二.学到的&&不足: 四.学习WP 1.学习一个大佬的思路: 2.学习 ...
- java数组length_Java数组属性 length属性,表示数组的长度
java中数组的.length属性 Class A: public void run() { byte[] sendDateBuff=new byte[593]; sen正常来说,java中数组长度一 ...
- java String中文字符串分割成数组 中文字符串分割成一定长度的字符串数组
java String中文字符串分割成一定长度的字符串数组 /*** 几个字一组 变量控制 大于零有意义*/ int num = 6; /*** 待操作的字符串*/ String str = &quo ...
- JAVA关于字符串字符数组处理的小题目
JAVA关于字符串&&字符数组的小题目 第二题:分析以下需求,并用代码实现 1.键盘录入一个大字符串,再录入一个小字符串 2.统计小字符串在大字符串中出现的次数 3.代码运行打印格式: ...
- 字符串分隔 -连续输入字符串,请按长度为8拆分每个字符串后输出到新的字符串数组; •长度不是8整数倍的字符串请在后面补数字0,空字符串不处理。...
•连续输入字符串,请按长度为8拆分每个字符串后输出到新的字符串数组: •长度不是8整数倍的字符串请在后面补数字0,空字符串不处理. 输入描述: 连续输入字符串(输入2次,每个字符串长度小于100) 输 ...
- java长度为100的数组_产生一个int数组,长度为100,并向其中随机插入1-100,不重复...
#define RANDOM(X) (rand() % X + 1) int main() { //标志数组 int book[] = {}; int result[] = {}; //默认的随机数种 ...
- java字符串拆分成数组_用Java实现JVM第八章《数组和字符串》
小傅哥 | https://bugstack.cn 沉淀.分享.成长,专注于原创专题案例,以最易学习编程的方式分享知识,让自己和他人都能有所收获.目前已完成的专题有:Netty4.x实战专题案例.用J ...
- 【Android NDK 开发】JNI 方法解析 ( 字符串数组参数传递 | 字符串遍历 | 类型强转 | Java 字符串与 C 字符串转换 | 字符串释放 )
文章目录 I . C/C++ 中的 Java 字符串数组类型 II . 获取字符串数组长度 III . 获取字符串数组元素 IV . 类型强转 ( jobject -> jstring ) V ...
最新文章
- python name_python中__name__的使用
- python 文件不存在时才能写入,读写模式xt
- 配置网络测试环境的批处理
- CoreCRM 开发实录——开始之新项目的技术选择
- linux查看r的安装路径,在Linux CentOS 6.5版上安装R3.1.1的问题(检查LDFLAGS以获取Fortran库的路径)...
- CVPR 2019 Oral | 京东目标检测算法ScratchDet的深入思考
- Jquery.Datatables dom表格定位
- 21世纪商业运作平台:云计算(Cloud Computing)
- 数字媒体播放器行业调研报告 - 市场现状分析与发展前景预测
- Linux嵌入式开发_修改机器码
- schema约束和引入
- ubuntu下安装jre 7
- 黑帽SEO常用作弊手法分析
- java伪随机数概率_抽奖伪随机数生成器(Java)
- PAT——A1008Elevator(模拟)
- 互联网奥秘_Excel数据表的奥秘
- 教你写递归——递归三部曲
- 暴雪和黑客的战争四:暴雪的杀手锏-The Warden
- 任务卡_05-数据库_-MySql 高级任务
- 5分钟读懂UML类图