Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/154.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 使用字符串赋值和计算赋值安全吗?_C++_String - Fatal编程技术网

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";