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

时间:2013-04-11 08:31:18

标签: c++ string

如果我有:

#include <string>

std::string myString = "Hello";

然后做任何一个:

myString = "Hello World";

myString+= " World";

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

3 个答案:

答案 0 :(得分:7)

使用std::string时,std::string管理自己的内存就完全没问了。

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

答案 1 :(得分:5)

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

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

答案 2 :(得分:1)

使用string可以像处理int float等其他原始数据类型一样轻松处理它。

int a = 3;可以a = 5a += 3无任何伤害

同样适用于

string myString = "Hello";

myString = "Hello World";

myString+= " World";