Rust中 String、str、&str、char 的区别

打印 上一主题 下一主题

主题 580|帖子 580|积分 1740

先上结论


  • String 是动态分配在堆上的可变长度字符串范例。
  • str 是字符串切片范例,通常以 &str 的形式出现,用于引用字符串字面量或 String 的一部分。
  • &str 是字符串字面量的范例,以双引号创建,通常用于传递字符串数据的引用。
  • char 是单个 Unicode 字符范例,以单引号创建,用于表示单个字符。
String

String 是 Rust 中的可变长度字符串范例,它允许动态增长和修改。String 范例的数据存储在堆上,因此它们可以或许在运行时根据必要分配或释放内存。String 范例实现了 Deref,因此可以直接当作 &str 使用。
示例代码:
  1. // 创建一个空的 String
  2. let mut s = String::new();
  3. // 从字符串字面量创建 String
  4. let data = "initial contents";
  5. let s = data.to_string(); // 或者 let s = String::from(data);
  6. // 追加字符串
  7. s.push_str(" more content");
  8. // 添加单个字符
  9. s.push('!');
  10. println!("{}", s); // 输出: initial contents more content!
复制代码
str

str 是 Rust 中的字符串切片范例,它通常以不可变引用 &str 的形式出现。str 范例通常用于指向字符串字面量或 String 的部分内容,它存储在程序的静态存储区或堆上(当作 &str 时)。
示例代码:
  1. // 字符串字面量是 &str 类型
  2. let hello: &str = "Hello, world!";
  3. // 从 String 获取 &str
  4. let s = String::from("Hello");
  5. let slice: &str = &s;
  6. // 使用 &str 参数的函数
  7. fn takes_slice(slice: &str) {
  8.     println!("Got slice: {}", slice);
  9. }
  10. takes_slice("Hello");
复制代码
&str

&str 表示对字符串的引用,通常用于函数参数和字符串切片操作。它是 Rust 中常见的用于传递字符串数据的方式,由于它不必要拥有字符串的全部权,而是简单地借用它。
示例代码:
  1. // &str 作为函数参数
  2. fn print_length(s: &str) {
  3.     println!("Length of '{}' is {} bytes", s, s.len());
  4. }
  5. let message = "hello";
  6. print_length(message);
  7. // 字符串切片操作
  8. let s = "abcdef";
  9. let slice = &s[1..4]; // 切片操作,获取部分字符串
  10. println!("{}", slice); // 输出: bcd
复制代码
char

char 表示 Rust 中的单个字符,它使用单引号 ' 包裹。在 Rust 中,字符是 Unicode 标量值,每个字符占用 4 字节。char 范例提供了对单个字符的处理和操作能力。
示例代码:
  1. // 创建单个字符
  2. let c: char = 'a';
  3. // 遍历字符串中的字符
  4. for c in "hello".chars() {
  5.     println!("{}", c);
  6. }
  7. // 判断字符是否是数字
  8. let c = '7';
  9. if c.is_digit(10) {
  10.     println!("'{}' is a digit", c);
  11. }
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

梦应逍遥

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表