C++ 中string数组怎么求长度(元素个数)

您所在的位置:网站首页 string类型字符串长度 C++ 中string数组怎么求长度(元素个数)

C++ 中string数组怎么求长度(元素个数)

2024-07-10 04:26| 来源: 网络整理| 查看: 265

在C语言中,或者说在我们平时使用的基本类型中,数组的长度都可以用 sizeof(arr)/sizeof(arr[0]) 来求得。因为sizeof运算符可以求出每个对象所占内存的字节数,并且在这些基本类型组成的数组中,每个元素所占内存空间都是相同的,因此我们可以使用 “数量 = 总价 / 单价” 这种方式来计算。

那么在C++中我们可不可以这样做呢? 请看用例: 在这里插入图片描述 可以看到,使用这种方式我们成功求出了strArray中元素的个数。

而我们都知道的string字符串数组中每个string都是可变长度的,按理说使用 string 创建的数组每个元素所占空间大小都是不同的,那为什么仍然可以采用这种方式求成员个数呢?

string对象存储的内容大小与其所占的空间(栈空间)是没有关系的

string类型是个模板类( using string = basic_string; ) ,其中最后一个模板参数指定类申请内存的方式。

一个简答的示例:最初str指向"aa…",数据部分地址在 str.data() 中,str对象地址为str本身。 重新填充数据后,原空间不足以容纳200个’z’将重新申请空间。 在输出的结果中,可以发现。str对象的地址没有改变,只有数据部分地址改变了。 在这里插入图片描述

因此可以说string对象存储的内容大小与其所占的空间(栈空间)是没有关系的,因为数据部分存储在堆区中(空间适配器决定),换句话说在一个string的数组中每个string字符串所占的空间相同。 在这里插入图片描述

参考如下示例:

string s1[] = { "1" }; string s2[] = { "1","aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" }; string s3[] = { "1","2","3" }; cout


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3