就地字符串零终止长度更改

inplace string zero termination length change

在 nim 中,如果将字符串中间的字符设置为 '[=10=]',则 len 函数不会更新。这是我们永远不应该做的事情吗?切片是推荐的方式吗?

一般来说,你不应该认为 Nim 字符串是空终止的。尽管它们是,但这只是允许无缝 C 互操作的实现细节。

Nim 字符串也是编码不可知的,这意味着 '[=11=]' 可以是字符串中的有效字节。不过约定是utf8。

要更改字符串的长度,请使用 setLen proc.

var s = "123456"
s.setLen(3)
assert(s == "123")