当前位置: 首页>后端>正文

rust学习-1.3-字符串类型String和&str,转义字符

在Rust中,String&str(字符串切片)是两种不同的字符串类型,它们在内存中的表示和用途有所不同。

String

  • String是Rust标准库提供的可增长、可变的UTF-8编码字符串。
  • 它在堆上分配内存,可以动态地增长或缩小。
  • String拥有其数据的所有权,因此可以修改其内容。
    示例:
let mut s = String::from("hello");
s.push_str(", world!"); // 添加字符串
println!("{}", s); // 输出 "hello, world!"

&str

  • &str是字符串切片,它是对字符串一部分的引用。
  • 它可以是任何UTF-8编码字符串的视图,包括String对象和字符串字面量。
  • &str是不可变的,因为它只是引用,不拥有数据。
    示例:
let s = "hello, world!";
println!("{}", &s[0..5]); // 输出 "hello"

String&str的相互转换

  • String创建&str:由于String是UTF-8编码的,你可以通过引用来获取&str
    let s = String::from("hello");
    let slice: &str = &s; // `slice`是`&str`类型,引用了`s`
    
  • &str创建String:可以使用to_string方法或者String::from函数
    let slice = "hello";
    let s: String = slice.to_string(); // 或 `String::from(slice)`
    

理解String&str的区别对于编写高效的Rust代码非常重要,因为它们在性能和内存使用上有所不同。选择合适的类型可以帮助你避免不必要的内存分配和拷贝。

转义字符

在Rust中,转义字符是一系列特殊的字符,它们在字符串或字符字面量中使用,用于表示那些不能直接表示或容易引起混淆的字符。转义字符以反斜杠 \ 开头,后面跟着一个字符来表示特定的意思。
下面是一些Rust中的转义字符示例:

  • \ - 表示反斜杠字符 \
  • \' - 表示单引号字符 '
  • \" - 表示双引号字符 "
  • \n - 表示换行符(LF,Line Feed)。
  • \r - 表示回车符(CR,Carriage Return)。
  • \t - 表示水平制表符(HT,Horizontal Tab)。
  • \u{} - 表示一个Unicode字符,其中 {} 内是一个十六进制数。
    例如:
let quote = "他说:\"你好,世界!\"";
let newline = "这是第一行\n这是第二行";
let backslash = "这是一个反斜杠:\";
let unicode = "这是一个笑脸:\u{1F60A}";

在上述例子中:

  • quote 变量包含了一个双引号字符 ", 它被转义为 \"
  • newline 变量包含了一个换行符 \n,它将在输出时导致文本换行。
  • backslash 变量包含了一个反斜杠 \,它被转义为 \
  • unicode 变量包含了一个Unicode字符,它被表示为 \u{1F60A},这是一个笑脸表情。
    在Rust中,转义字符的使用是必要的,因为某些字符在字符串字面量中有特殊的含义或无法直接输入。正确地使用转义字符可以确保字符串的准确性和可读性。

https://www.xamrdz.com/backend/3gz1940939.html

相关文章: