String物件內容不能改變詳解

2021-10-07 04:52:32 字數 511 閱讀 2806

string s =

"wecome "

;s = s +

"to china"

;

這兩段**中,s指向了乙個string物件,「to china」建立了乙個新的string物件,也就是乙個「welcome 」值的string物件和乙個「to china」值的string物件,s = s + 「to china」 這裡其實不是把s指定的string物件給修改了,而是又建立了乙個新的string物件,值為welcome to china,然後把s的堆記憶體位址指向welcome to china的堆記憶體位址了。

通過上面的說明,我們容易得出另乙個結論,如果經常對字串進行各種各樣的修改,或者是不可預見的修改,那麼會造成大量的記憶體開銷。因為string物件建立以後就不可以改變,每次修改都會生成新的string物件。

對於這種情況,我們應該考慮使用stringbuffer類,它允許修改,不用每次修改都生成新的物件。並且stringbuffer和string類轉換非常容易。

模擬String的增刪查改

string的實現涉及很多c 的基礎知識 記憶體控制及異常處理等問題,仔細研究起來非常複雜,本文主要做乙個簡單介紹和講解模擬實現 string類的增刪查改。如下 define crt secure no warnings 1 include include using namespace std c...

Number物件,String 物件

number物件 number 和parseint 區別 var instr1 1 a var instr2 2 b console.log parseint instr1 parseint instr2 輸出為 3,parseint 只轉化 數值,不轉化字母等其他 console.log numb...

string不能用scanf賦值

在使用c c 的時候,經常有一些地方會混淆,雖然有的可以相容,但是有的還需要注意一下。今天遇到了乙個不相容的地方。直接上 define crt secure no warnings include include using namespace std int main 雖然可以輸出,但是輸出後,直...