在Rust中,将一个字符串与从输入读取的字符串进行比较结果不匹配。

9
在下面的代码中,我期望当用户输入“q”时,会打印出消息“wow”,但实际上并没有。
fn main() {
    let mut input = String::new();
    io::stdin().read_line(&mut input)
        .expect("failed to read line");

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

为什么消息没有按预期打印出来?
1个回答

26

您的输入字符串包含一个尾随换行符。使用 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"

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接