将字符串与从输入读取的字符串进行比较在Rust中不匹配

时间:2016-07-03 15:55:16

标签: string io rust

在下面的代码中,当用户输入“q”时,我希望打印消息“哇”,但事实并非如此。

fn main() {
    let mut input = String::new();
    io::stdin().read_line(&mut input)
        .expect("failed to read line");

    if input == "q" {
       println!("wow") ;
    }
}

为什么邮件没有按预期打印?

1 个答案:

答案 0 :(得分:5)

您的输入字符串包含尾随换行符。使用trim将其删除:

use std::io;

fn main() {
    let mut input = String::new();
    io::stdin()
        .read_line(&mut input)
        .expect("failed to read line");

    if input.trim() == "q" {
        println!("wow") ;
    }
}

您可以通过打印输入值

自行查看
println!("{:?}", input);
$ ./foo
q
"q\n"