rem: char operator[](int i) const{ assert(i>=0&&i<_len); return (char)_s[i]; }
add: char &operator[](int i)	{ assert(i>=0&&i<_len); return (char &)_s[i]; }
context:     char operator[](int i) const{ assert(i>=0&&i<_len); return (char)_s[i]; }