为什么无论我输入什么都不打印?
Why doesn't this print nomatter what I input?
我是 Rust 的新手,刚刚了解了命令行的用户输入,我尝试制作这个简单的程序来测试。当我 运行 它时,我没有收到任何错误,但即使我输入“mac”或其他任何内容,它也不会打印任何内容。我想知道为什么会这样,如果有人能解释一下,我将不胜感激。
这是我的代码:
use std::io::{stdin, stdout, Write};
fn main() {
print!("State your OS: ");
stdout().flush().expect("Flush Failed!");
let mut input_string = String::new();
stdin()
.read_line(&mut input_string)
.ok()
.expect("Failed to read line!");
if input_string == "mac" {
println!("Mac");
} else if input_string == "windows" {
println!("Windows");
} else if input_string == "linux" {
println!("Linux");
}
}
您输入的字符串末尾有一个换行符。这在 read_line()
.
的文档中指定
您的问题的一个可能解决方案是 trim 字符串。示例:
use std::io::{stdin, stdout, Write};
fn main() {
print!("State your OS: ");
stdout().flush().expect("Flush Failed!");
let mut input_string = String::new();
stdin()
.read_line(&mut input_string)
.ok()
.expect("Failed to read line!");
let s = input_string.trim();
if s == "mac" {
println!("Mac");
} else if s == "windows" {
println!("Windows");
} else if s == "linux" {
println!("Linux");
}
}
还有其他可能的方法,但我认为在几乎所有情况下,trim()
用户输入都是一种很好的做法。请注意,您的用户可能会输入 " mac"
,在这种情况下,您可能希望将输入视为 "mac"
。
我是 Rust 的新手,刚刚了解了命令行的用户输入,我尝试制作这个简单的程序来测试。当我 运行 它时,我没有收到任何错误,但即使我输入“mac”或其他任何内容,它也不会打印任何内容。我想知道为什么会这样,如果有人能解释一下,我将不胜感激。
这是我的代码:
use std::io::{stdin, stdout, Write};
fn main() {
print!("State your OS: ");
stdout().flush().expect("Flush Failed!");
let mut input_string = String::new();
stdin()
.read_line(&mut input_string)
.ok()
.expect("Failed to read line!");
if input_string == "mac" {
println!("Mac");
} else if input_string == "windows" {
println!("Windows");
} else if input_string == "linux" {
println!("Linux");
}
}
您输入的字符串末尾有一个换行符。这在 read_line()
.
您的问题的一个可能解决方案是 trim 字符串。示例:
use std::io::{stdin, stdout, Write};
fn main() {
print!("State your OS: ");
stdout().flush().expect("Flush Failed!");
let mut input_string = String::new();
stdin()
.read_line(&mut input_string)
.ok()
.expect("Failed to read line!");
let s = input_string.trim();
if s == "mac" {
println!("Mac");
} else if s == "windows" {
println!("Windows");
} else if s == "linux" {
println!("Linux");
}
}
还有其他可能的方法,但我认为在几乎所有情况下,trim()
用户输入都是一种很好的做法。请注意,您的用户可能会输入 " mac"
,在这种情况下,您可能希望将输入视为 "mac"
。