MST

星途 面试题库

面试题:Rust中如何正确处理UTF - 8编码字符串的遍历

在Rust中,假设有一个UTF - 8编码的字符串`let s = "你好,世界";`,请编写代码实现逐个字符遍历该字符串,并打印出每个字符。同时解释为什么不能简单地像遍历字节数组一样遍历这个字符串。
24.4万 热度难度
编程语言Rust

知识考点

AI 面试

面试题答案

一键面试

代码实现

fn main() {
    let s = "你好,世界";
    for c in s.chars() {
        println!("{}", c);
    }
}

不能像遍历字节数组一样遍历的原因

  1. UTF - 8 编码特性:UTF - 8是一种变长编码,一个字符可能由1到4个字节表示。例如,英文字母通常用1个字节表示,而中文字符可能用3个字节表示。如果简单地像遍历字节数组一样遍历字符串,会将一个字符拆分成多个部分,导致得到的不是完整的字符。
  2. 语义理解:Rust的String类型是基于UTF - 8编码的,chars()方法会按照字符语义来解析字符串,确保每次迭代得到的都是一个完整的Unicode字符,而不仅仅是字节序列。这样能正确处理各种语言的字符,符合开发者对字符遍历的常规期望。