C ++:char指针指向std :: string转换复制内容吗?

时间:2013-05-08 11:26:49

标签: c++ string constructor stdstring

使用构造函数将char*转换为std::string时:

char *ps = "Hello";
std::string str(ps);

我知道std容器在被要求存储它们时会倾向于复制值。 是复制整个字符串还是仅指针? 如果之后我做str = "Bye"会改变ps指向“再见”吗?

2 个答案:

答案 0 :(得分:26)

std::string对象将分配内部缓冲区,并将复制ps指向的字符串。对该字符串的更改不会反映到ps缓冲区,反之亦然。它被称为“深层复制”。如果仅复制指针本身而不是内存内容,则称为“浅拷贝”。

重申:std::string在这种情况下执行深层复制。

答案 1 :(得分:5)

str将包含ps的副本,更改str不会更改ps