fn main() { let mut s=String::new(); s.push('a'); //添加一个字符 s.push_str("hello"); s.push_str(" world"); println!("{}",s); let s1=String::from("hi"); let s2=&s1; println!("{}",s1); let s3 = "hello every".to_string(); println!("{}",s3); println!("{}",s3);//宏不影响 let s4=format!("{}{}{}","a","b","c"); println!("{}",s4); println!("{}",s4); let s51=String::from("b"); let s52=String::from("c"); let s5=format!("{}{}{}","a",s51,s52); println!("{}",s5); println!("{}",s5); // let s6="a"+"b";//错误 `+` cannot be used to concatenate two `&str` strings // let s7="a"+s51; //错误 let s7=s51+"a";//String必须在前面 //s1[0];//`std::string::String` cannot be indexed by `{integer} let s8="hello"; // let s9=s8[0];//required because of the requirements on the impl of `std::ops::Index<{integer}>` for `str' //String 和 &str 都不能索引,处理字符请使用 .chars() 迭代器。 let s = String::from("hello"); // 正确方式1:chars() for c in s.chars() { println!("{}", c); } let first_char = s.chars().next(); // Option<char> println!("{:?}", first_char); // Some('h') // 正确方式2:收集为Vec let chars: Vec<char> = s.chars().collect(); println!("第一个字符: {}", chars[0]); // 正确方式3:字节索引(仅ASCII) let bytes = s.as_bytes(); println!("第一个字节: {}", bytes[0] as char); // 处理中文 let chinese = String::from("你好"); let first = chinese.chars().next().unwrap(); println!("第一个中文字符: {}", first); // '你' } }