C++ 的 string 可以用索引原地修改,JS 的字串不行
JS 的字串是 primitive,完全不可變:
let str = "cat";
str[0] = "b"; // 靜默失敗或報錯,str 依然是 "cat"C++ 的
string內部就是由多個char組成,所以可以直接用char原地修改特定位置:
string s = "cat";
char new_head = 'b';
s[0] = new_head; // 合法!s 直接變成 "bat"完全不需要重新建構字串。 這是 string 本質上是「動態包裝的 char 陣列」帶來的直接後果——見 C++ 的 char 和 string 是兩個世界,引號不能混用。
注意賦進去的必須是 char(單引號),不是長度為 1 的 string;能這樣寫的原因見 C++ 的 char 本質是小整數。