关于string
来源:5-11 string的简介
学以致用over
2022-04-05
#include <iostream>
#include <string>
using namespace std;
int main() {
string s1 = "helloworld";
const char* c_str = s1.c_str();
我发现把string转成c语言的方式存储,只是把s1[0]的地址赋给c_str,对于s1前面的size、capacity、allocator并没有赋值,并且在内存存的值也很奇怪,我尝试把它当作地址去查,并没有发现我想要的值
老师,请问
- 对于string中的size、capacity、allocator存储在哪?存储在&s ~&s1[0]这段地址表达的是什么?
- string中length(),size()不是等同吗?为什么在监视窗口可以直接查看size,而对length查看有副作用风险?
写回答
1回答
-
这些我建议你看下源码应该很容易得出结论。size是字符串长度,capacity是分配的存储空间大小;allocator是独立的迭代器类,这部分我们STL课程中有详细的分析。
印象中length和size的实现是一样的。length是因为沿用C语言的习惯而保留下来的,引入STL之后,为了兼容又加入了size,它是作为STL容器的属性存在的,便于符合STL的接口规则,以便用于STL的算法。
00
相似问题
练习题中string的实现
回答 1
老师,关于字符串的问题
回答 1