char* 型字符数组中间如果有值为0的字符,如何正确取得这个数组的大小

char* 型字符数组中间如果有值为0的字符,如何正确取得这个数组的大小,第1张

char str=new char[4];

str仅仅是个指针,它指向的那块空间的长度是无法求出的

实际应用中这样的要求基本不会存在,如果这个数组的长度确定是4了,那就弄个自动数组就行了比如char str[4];这样就可以用sizeof *** 作符得出具体长度

如果真的要求在运行期动态分配长度,那么必然会有一个表示长度的变量,那么用这个变量就行了,比如

int len;

cin>>len;

char str= new char[len];

要长度就去找len啊

可以使用数组的indexof()方法,如果返回值为-1则说明不存在,如果返回值为大于-1的整数,则说明存在。例如:

var

arr

=

[1,2,3];

arrindexof(1);

//

返回0

arrindexof(5);

//

返回-1

附:返回值为数组中的最靠前元素在数组的位置

(1) 直接读取缓冲区

读取

BYTE buf;

SafeArrayAccessData(psa, (void )&buf); //安全指针

SafeArrayUnaccessData(psa); //关闭后仍然可读取数据,但不能写入

写入

BYTE buf;

SafeArrayAccessData(psa, (void )&buf); //安全指针

for(int i=0;i<len;i++)buf[i]=(i+2)%256; 直接修改缓冲区

SafeArrayUnaccessData(psa);

(2) 利用函数单个读取(SafeArrayGetElement,SafeArrayPutElement)

读取

long len=psa->rgsabound[0]cElements;

BYTE pData=new BYTE[len];

for (int i=0;i

{

::SafeArrayGetElement(psa,&i,pData+i)

}

写入

long len=psa->rgsabound[0]cElements;

for (int i=0;i

{

::SafeArrayPutElement(psa,&i,pData[i])

}

以上就是关于char* 型字符数组中间如果有值为0的字符,如何正确取得这个数组的大小全部的内容,包括:char* 型字符数组中间如果有值为0的字符,如何正确取得这个数组的大小、如何判断数组中的元素大小、高分求教:VARIANT中数组大小如何获取等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9675521.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-30
下一篇2023-04-30

发表评论

登录后才能评论

评论列表(0条)

    保存