如果我有:使用字符串賦值和複合賦值是否安全?
#include <string>
std::string myString = "Hello";
然後請執行:
myString = "Hello World";
或
myString+= " World";
我是在寫了一些其他內存的危險?
我必須使用字符串函數來添加或更改字符串的大小嗎?
如果我有:使用字符串賦值和複合賦值是否安全?
#include <string>
std::string myString = "Hello";
然後請執行:
myString = "Hello World";
或
myString+= " World";
我是在寫了一些其他內存的危險?
我必須使用字符串函數來添加或更改字符串的大小嗎?
隨着std::string
,這是完全正常的,因爲std::string
管理自己的內存。
使用char*
的c風格字符串,您需要管理自己的內存。
使用string
給你處理它,就像像其他基本數據類型的豪華int
float
等
int a = 3;
,可向a = 5
或a += 3
無任何傷害
也是一樣
string myString = "Hello";
myString = "Hello World";
myString+= " World";
我不認爲這是正確的。例如,無符號字符只能達到255.除此之外,它不起作用。使用字符串,您可以隨心所欲地添加(直到您的計算機內存不足)。雖然我只是猜測,因爲我是C++的新手。像在你的例子中一樣加3,你只是改變存儲的值,你不會增加'int'的容量。 – Tez 2013-04-11 10:29:03
@Tez是的,我很抱歉沒有說清楚。我不打算通過doin'+ = 3'來增加int的大小。我想用'std :: string'指出你可以使用'+'等改變字符串中的數據。用'char *'等我們需要使用'strcat()'... – 2013-04-11 10:41:14
好的。沒有傷害:) – Tez 2013-04-11 12:20:57
std字符串就像任何其他容器類一樣向量。他們也有連續的內存結構,當他們需要額外的空間時,他們只是爲自己重新分配內存。
如果您正在處理頻繁的字符串更新並且字符串會隨時間增長,您可以調用string :: reserve()方法爲您的字符串預先分配一些內存,以便新的插入不會導致大量的內存移動
你的意思是*連續*記憶,而不是*傳染性*? – Default 2013-04-11 09:09:06
@默認抱歉,我的意思是連續的 – 2013-04-11 09:39:34
謝謝!我希望這會很容易。 – Tez 2013-04-11 08:34:20
這是爲什麼字符串被添加到庫中的主要原因。 – Barmar 2013-04-11 08:34:32