使用字符串赋值和复合赋值是否安全?

Tez*_*Tez 5 c++ string

如果我有:

#include <string>

std::string myString = "Hello";
Run Code Online (Sandbox Code Playgroud)

然后做任何一个:

myString = "Hello World";
Run Code Online (Sandbox Code Playgroud)

要么

myString+= " World";
Run Code Online (Sandbox Code Playgroud)

我是否有写一些其他记忆的风险?
我是否必须使用字符串函数来添加或更改字符串的大小?

Pub*_*bby 7

随着std::string,std::string管理自己的记忆完全没问题.

使用c风格的字符串时char*,您需要管理自己的内存.

  • 这是将`string`添加到库中的主要原因. (2认同)

fat*_*ihk 5

std string就像vector之类的任何其他容器类一样.它们还具有连续的内存结构,当它们需要额外的空间时,它们只需为自己重新分配内存.

如果您正在使用频繁的字符串更新并且字符串会及时增长,则可以调用string :: reserve()方法为字符串预分配一些内存,以便新插入不会导致大量内存移动