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 本質是小整數。