C++ 中string数组怎么求长度(元素个数) |
您所在的位置:网站首页 › string类型字符串长度 › C++ 中string数组怎么求长度(元素个数) |
在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 |