【Rust】字符串String类型学习

打印 上一主题 下一主题

主题 521|帖子 521|积分 1563

什么是String



  • Rust的焦点语言中只有一个String类型,那就是String slice,str通常被看成是&str的借用。
  • String类型是通过标准库提供的,而不是直接编码到焦点语言中,它是一个可增长的、可变的、utf-8编码的类型。
  • str和String都是utf-8编码的。如果你想利用一个非utf-8编码的String,可以利用OsString。
创建新的String



  • String实际上是通过包装bytes类型的vector实现的。
  • 利用new方法创建String:let mut s = String::new()
  • 利用to_string方法创建String:
    1. let data = "initial contents";
    2. let s = data.to_string();
    3. let s = "initial contents".to_string();
    复制代码
  • 利用String::from方法创建字符串,let s = String::from("initial contents").
  • 根据指定的容量,创建一个空字符串let mut s = String::with_capacity(10);。当字符串长度小于10的时间,不会触发内存重分配。
  • 可以通过len方法检察字符串长度,通过capacity方法检察字符串容量。
  • 通过utf-8类型的vector创建字符串。
更新String

利用push_str和push追加字符串

  1. let mut s = String::from("foo");
  2. s.push_str("bar");
  3. // s is foobar
复制代码
push_str方法不会改变字符串的所有权
  1. let mut s = String::from("lo");
  2. s.push('l');
  3. // s is lol
复制代码
利用+操作符或者 format!宏连接字符串

  1. let s1 = String::from("Hello, ");
  2. let s2 = String::from("world!");
  3. let s3 = s1 + &s2; // note s1 has been moved here and can no longer be used
复制代码
  1. let s1 = String::from("tic");
  2. let s2 = String::from("tac");
  3. let s3 = String::from("toe");
  4. let s = format!("{s1}-{s2}-{s3}");
复制代码
Rust不允许利用下标访问字符串里面的单个字符
迭代字符串的方法



  • 可以利用chars方法访问独立的UniCode字符。利用bytes方法访问每一个字节。
  1. for c in "Зд".chars() {
  2.     println!("{c}");
  3. }
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

正序浏览

快速回复

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

本版积分规则

农妇山泉一亩田

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表