栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

c++ template 数组长度

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

c++ template 数组长度

c++ template 数组长度
template 
int arrLength(T & arr){
	// 实测并不需要额外处理数组长度为0的情况
	int n = sizeof(arr)/sizeof(arr[0]);
	if((typeid('') == typeid(arr[0])) && n && (arr[n-1] == '')){
		// 如为字符串数组返回的是不包括最后''的长度
		--n;
	}
    return n;
}

注1-例子:

char chs1[] = {'a','b','c'};//{97,98,99}
strlen(chs1) == 4;
sizeof(chs1)/sizeof(chs1[0]) == 3;
arrLength(chs1) == 3;

char chs2[] = {'','b','c'};//{0,98,99}
strlen(chs2) == 0;
sizeof(chs2)/sizeof(chs2[0]) == 3;
arrLength(chs1) == 3;

char chs3[] = {'a','','c'};//{97,00,99}
strlen(chs3) == 1;
sizeof(chs3)/sizeof(chs3[0]) == 3;
arrLength(chs1) == 3;

char chs4[] = "0123";
strlen(chs4) == 4;
sizeof(chs4)/sizeof(chs4[0]) == 5;
arrLength(chs1) == 4;

char chs5[] = {97,98,97,0};
strlen(chs4) == 3;
sizeof(chs4)/sizeof(chs4[0]) == 4;
arrLength(chs1) == 3;//此处判断出错!

注2:
char ch[] = "0123143";类似这样里面的’’会连着后面的数字识别成一个字符’12’(8进制);相当于char ch[] = {48,49,50,12,51};,"0123x89123"中的x89同理

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/960406.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号