C++ 使用字符串赋值和计算赋值安全吗?
如果我有:C++ 使用字符串赋值和计算赋值安全吗?,c++,string,C++,String,如果我有: #include <string> std::string myString = "Hello"; 或 我是否有在其他记忆上写东西的风险? 我必须使用字符串函数来添加或更改字符串的大小吗?使用std::string,这完全可以,因为std::string管理自己的内存 对于使用char*的c样式字符串,您需要管理自己的内存。使用string可以像处理int
#include <string>
std::string myString = "Hello";
或
我是否有在其他记忆上写东西的风险?我必须使用字符串函数来添加或更改字符串的大小吗?使用
std::string
,这完全可以,因为std::string
管理自己的内存
对于使用
char*
的c样式字符串,您需要管理自己的内存。使用string
可以像处理int
inta=3代码>可以设置为a=5
或a+=3
,而不会造成任何伤害
同样的道理也适用于
string myString = "Hello";
myString = "Hello World";
myString+= " World";
std字符串与任何其他容器类(如vector)一样。它们也有连续的内存结构,当它们需要额外的空间时,它们只是为自己重新分配内存
如果您使用频繁的字符串更新,并且字符串会随着时间增长,那么可以调用string::reserve()方法为字符串预先分配一些内存,这样新的插入不会导致大量内存移动谢谢!我希望它会这么简单。这就是为什么string
被添加到库中的主要原因。你是说连续内存而不是传染性吗?@Default抱歉,我是说contiguous我认为这不对。例如,unsigned char只能增加到255。再多一点就不行了。使用字符串,您可以继续添加任意数量的内容(直到您的计算机内存耗尽)。虽然我只是猜测,因为我是新的C++。将3添加到一个整数中,就像在您的示例中一样,您只是更改存储的值,而不是增加“int”的容量。@Tez是的,很抱歉没有说清楚。我不是想通过做+=3
来增加int
的大小。我想指出,使用std::string
可以使用+
等更改字符串中保存的数据。使用char*
等,我们需要使用strcat()
。。。
myString+= " World";
string myString = "Hello";
myString = "Hello World";
myString+= " World";