Rust 中的字符串、范围和切片
1. Rust 字符串操作与实现
在 Rust 里,字符串操作十分灵活,并且有着独特的实现方式。
1.1 字符串操作示例
下面的代码展示了一系列字符串操作:
a.pop(); // "H"
a.push('i'); // "Hi"
print!("{}", a);
这里,变量 a 初始为 “Xy”,先移除位置 0 的字符得到 “y”,接着在位置 0 插入 “H” 得到 “Hy”,再移除末尾字符得到 “H”,最后在末尾添加 “i” 得到最终的 “Hi”。
1.2 字符串的实现
Rust 的静态字符串与 C 语言字符串有相似之处,没有字符串终止符但多了一个计数器;而动态字符串则类似于 C++ 的 std::string 对象。Rust 和 C++ 的动态字符串类型都包含一个动态分配的字节数组,用于存储字符串的字符。
主要区别在于,C++ 字符串的每个字节恰好代表一个字符,而 Rust 的动态字符串和静态字符串的缓冲区都采用 UTF - 8 编码,所以一个字节不一定对应一个字符。
在 Rust 中,字符串与数组和向量有相似性。静态字符串缓冲区类似于数组,即 str 类型类似于通用的 [u8; N] 类型;动态字符串类似于字节向量,即 String 类型类似于 Vec<u8> </
超级会员免费看
订阅专栏 解锁全文
900

被折叠的 条评论
为什么被折叠?



