std::string ss = "sdfsefsf";
ss[3] = '\0'; // 或 NULL
// 結果:第 4 字符變空字符,長度不變,輸出見「sdf\0efsf」
erase()std::string ss = "sdfsefsf";
// 刪除第 4 個字符(下標 3)
ss.erase(ss.begin() + 3);
// 結果:ss == "sdsefsf",長度變 7
| 語法 | 說明 | 範例 |
|---|---|---|
erase(pos, len) | 從 pos 刪除 len 個字符 | s.erase(3, 2) 刪除下標 3、4 |
erase(iterator) | 刪除單個迭代器位置字符 | s.erase(s.begin()+3) |
erase(first, last) | 刪除範圍 [first, last) | s.erase(s.begin()+2, s.begin()+5) |
string 內部自動管理記憶體,erase 會移動後續字符並更新長度,無需手動釋放。std::list<char> 或 rope(SGI STL 扩展)。char[] 需手動 memmove 並維護結束符,建議優先用 std::string。記住:刪除用 erase,別用賦值空字符。