這涉及到動態維護數組,壹般初始化時候先根據妳儲存的字符串的每次遞增大小評估並預定壹個緩存大小,為了減少程序在每次新增字符或字符串時調整次數,確保多預留壹點。當然步增的大小也不能太大,太多預留空間會占內存,所以適當選擇進行平衡。
比如根據需求評估下來,每次增加100個字符比較合適,那麽宏定義StepSize 100,即每次增加100個字符,那麽先初始化:
char *pBuff=new char[StepSize];
當妳的程序在插入新字符或新字符串時,進行判斷空間是否夠用,快不夠時,就需要增大空間,妳可以編寫壹個Resize函數調整緩存空間,和壹個插入函數,插入函數在需要時調用Resize函數去擴展空間。
調整緩存空間和插入字符的思路如下:
1、重新計算新的實際所需內存大小以及預留空間,最終計算出總體大小NewSize。
2、備份原內存地址,以便最後釋放。
char *tp=pBuff;
3、重新分配內存空間
char *pBuff =new char[NewSize];
4、計算新字符插入點和新字符串長度
5、使用字符串復制函數將插入點之前的所有字符復制到新緩存中
6、在新緩存中,在插入點開始復制新增字符或字符串。
7、將插入點之後,將原緩存中剩余字符串復制到新緩存尾部(起始位置為新增長度+插入點)。
8、重新計算並記錄有效字符長度。
9、釋放原緩存
delete []tp;tp=null;
完成以上步驟,實現將新字符插入原字符緩存中,並根據實際需要,擴展緩存大小。
最好用類來封裝,希望對妳有幫助。