导入
字符串简介
本节课将介绍字符串,两种不同类型的字符串,以及如何在 Rust 中创建它们。
什么是字符串?
字符串是一系列 Unicode 字符的序列。
在 Rust 中,String 不像其他编程语言中的字符串那样以空字符结尾。它们可以包含空字符。
注意:请查看 Unicode 字符列表
字符串的类型
字符串分为两种类型:&str 和 String。
字符串字面量(&str)
字符串字面量具有以下特性:
- 基本类型
- 不可变
- 长度固定,存储在内存中的某个位置
- 字符串的值在编译时就已经确定
注意:字符串字面量也被称为字符串切片。
创建字符串字面量
下图展示了如何创建一个基本的字符串:
...
1fn main() { 2 // 定义一个基本字符串变量 3 let language: &str = "Rust"; 4 // 输出字符串字面量 5 println!("字符串字面量: {}", language); 6 // 输出字符串字面量的长度 7 println!("字符串字面量的长度: {}", language.len()); 8}
字符串对象(String)
字符串对象具有以下特性:
- 字符串以 UTF-8 编码方式存储
- 是堆分配的数据结构
- 字符串的大小可以动态修改
- 不以空字符结尾
- 可用于存储运行时才确定的字符串值
创建字符串对象
创建和操作字符串对象有多种方法,这里介绍两种。
创建空字符串对象
此方法使用 .to_string() 方法将空字符串或字符串字面量转换为 String 对象。
下图展示如何创建一个空字符串,并通过 .to_string() 方法将其转换为字符串对象:
...
创建已初始化的字符串对象
- 此方法通过
from()方法传入默认值来创建字符串。
- 下图展示如何先创建一个字符串字面量,再将其转换为字符串对象:
1fn main() { 2 // 创建一个空字符串 3 let course1 = String::new(); 4 // 将字符串字面量转换为字符串对象 5 let s_course1 = course1.to_string(); 6 // 输出字符串对象 7 println!("这是一个空字符串 {}。", s_course1); 8 // 输出空字符串对象的长度 9 println!("这是我的空字符串的长度 {}。", s_course1.len()); 10 11 // 创建一个字符串字面量 12 let course2 = "Rust Programming"; 13 // 将字符串字面量转换为字符串对象 14 let s_course2 = course2.to_string(); 15 // 输出字符串对象 16 println!("这是一个字符串字面量 : {}。", s_course2); 17 // 输出字符串对象的长度 18 println!("这是我的字符串字面量的长度 {}。", s_course2.len()); 19 20 // 使用 from 方法定义一个字符串对象 21 let course3 = String::from("Rust Language"); 22 // 输出字符串对象 23 println!("这是一个字符串对象 : {}。", course3); 24 // 输出字符串对象的长度 25 println!("这是我的字符串对象的长度 {}。", course3.len()); 26}
注意:
len()是一个内置函数,用于获取字符串字面量和字符串对象的长度。
现在我们已经了解了字符串及其类型,接下来将在下一课中学习字符串对象的核心方法。