唯一的解决办法就是增加一个长度参数
在字符串指针指向的内容是空字符结尾的字符串的时候,可以使用strlen来获取指向字符串的大小
但是实际指向内存块的大小,是无法知道的。
这是因为指针在作为参数传递的时候,只传过来了地址值,而没有传过来任何长度信息
实际上指针的长度信息是编译阶段获取的,而函数参数无法包含这种信息,故而不可能从指针参数获得指向空间的大小,即是貌似可以的方法,得到的长度也是不可靠的
sizeof(a)返回的是对象占用内存的字节数,而asize()是string类定义的一个返回字符串大小的函数,两个是完全不一样的概念。
明确两者的概念和作用:
1、size()函数:
c++中,在获取字符串长度时,size()函数与length()函数作用相同。 除此之外,size()函数还可以获取vector类型的长度。
例如:vector < int> num(15,2) ,则:numsize() = 15。
2、sizeof():
sizeof()运算符用来求对象所占内存空间的大小。
假设以下对象,分别使用sizeof函数:
执行输出结果:
扩展资料
sizeof()是运算符,其值在编译时即计算好了,参数可以是数组、指针、类型、对象、函数等。它的功能是:获得保证能容纳实现所建立的最大对象的字节大小。由于在编译时计算,因此sizeof不能用来返回动态分配的内存空间的大小。
size是由string vector 和bitset定义的函数,分别用于返回字符个数,元素个数和二进制位的数。string和vector的size成员函数用以返回size_type类型的值。bitset返回size_t的值。
用法,例如string
string st("fddddddddgs");
cout<<"the size of"<<st<<"is"<<stsize();
打印st中的字符个数
size其实就是计算不同类型容器中的元素个数的。
参考资料:
你的程序没有任何问题啊。。。看我的输出(ctrl+Z是手动结束符)
vector的大小用vsize();查看,最大容量用vcapacity();查看就可以了。。
Vector是向量类型,你可以在Vector中存储相同数据类型的多个数据,但是你不能初始化Vector的大小或者容量。说白了,Vector就是一个集合,其中可以存储类型相同的多个数据,你存储多少个,Vector的大小就为多少,不能初始化Vector的大小。
这样来声明:
Vector<String> vector = new Vector<String>();
这样向Vector中加入数据:
vectoraddElement(String型的数据);
所有数据加入完成后不要忘了写:
vectortrimToSize();
这样获取Vector的容量或其中存储的数据个数:
int count = vectorsize();
希望我的描述能够对楼主有所帮助!
以上就是关于C++ 怎么得到字符串指针指向的内存块的大小全部的内容,包括:C++ 怎么得到字符串指针指向的内存块的大小、C++ 关于size()和sizeof()、C++中如何输出未知大小的vector对象的值等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)