使用Rust中的for循环通过输入字符串初始化向量
当通过for循环中的输入字符串初始化向量时,我遇到了一个问题。这里有两个误解。 首先,您试图在不清除字符串的情况下读入字符串 假设第一个名字是福,第二个名字是巴。 在第一个read_行之后,输入的值实际上是Foo。但是第二个read_行不会覆盖,它将追加。现在值将是FooBar,这可能不是您想要的 第二个也是更重要的是,在第一次循环迭代中将字符串传递给了vec。但您正试图在第二次迭代中使用它。这涉及到所有权领域,您可以阅读更多使用Rust中的for循环通过输入字符串初始化向量,rust,rust-cargo,Rust,Rust Cargo,当通过for循环中的输入字符串初始化向量时,我遇到了一个问题。这里有两个误解。 首先,您试图在不清除字符串的情况下读入字符串 假设第一个名字是福,第二个名字是巴。 在第一个read_行之后,输入的值实际上是Foo。但是第二个read_行不会覆盖,它将追加。现在值将是FooBar,这可能不是您想要的 第二个也是更重要的是,在第一次循环迭代中将字符串传递给了vec。但您正试图在第二次迭代中使用它。这涉及到所有权领域,您可以阅读更多 对于循环的每次迭代,您需要的是一个新字符串。因此,在循环中定义一个新
对于循环的每次迭代,您需要的是一个新字符串。因此,在循环中定义一个新的输入\u播放器。播放器号是多少?感谢Kushagra,它使用克隆方法并在每次迭代中初始化字符串的新对象来解决这个问题。让mut输入_player=String::new;让mut player_name=Vec::new;普林顿!输入玩家的姓名:;对于in 1..player_number+1{println!输入播放器的名称{}:,a;io::stdin.read_line&mut input_player.expected无法从stdin;player_name.pushinput_player.clone;input_player=String::new;}
let mut input_player = String::new();
let mut player_name = Vec::new();
println!("Enter names of the player: ");
for a in 1..(player_number+1){
println!("Enter names of the player # {}: ", a);
io::stdin()
.read_line(&mut input_player)
.expect("failed to read from stdin");
player_name.push(input_player);
}