关于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并没有赋值,并且在内存存的值也很奇怪,我尝试把它当作地址去查,并没有发现我想要的值
图片描述老师,请问

  1. 对于string中的size、capacity、allocator存储在哪?存储在&s ~&s1[0]这段地址表达的是什么?
  2. string中length(),size()不是等同吗?为什么在监视窗口可以直接查看size,而对length查看有副作用风险?
写回答

1回答

quickzhao

2022-04-05

这些我建议你看下源码应该很容易得出结论。size是字符串长度,capacity是分配的存储空间大小;allocator是独立的迭代器类,这部分我们STL课程中有详细的分析。

印象中length和size的实现是一样的。length是因为沿用C语言的习惯而保留下来的,引入STL之后,为了兼容又加入了size,它是作为STL容器的属性存在的,便于符合STL的接口规则,以便用于STL的算法。


0
0

重学C++ ,重构你的C++知识体系

一部大片,一段历史,构建C++知识框架的同时重塑你的编程思维

3884 学习 · 1103 问题

查看课程