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);  // '你'

    //String和&str的转换
	let a = "wzg";
	let b = a.to_string();
	let b = String::from(a);
	let b = a.to_owned();


	let a = &b;
	let a = &b[..];
	let a = format!("{}", b);
}


   
 

Logo

CANN开发者社区旨在汇聚广大开发者,围绕CANN架构重构、算子开发、部署应用优化等核心方向,展开深度交流与思想碰撞,携手共同促进CANN开放生态突破!

更多推荐