這個問題在這里已經有了答案: 為什么從標準輸入讀取用戶輸入時我的字串不匹配? (3 個回答) 1 小時前關閉。
我是 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");
}
}
uj5u.com熱心網友回復:
您的輸入字串末尾有一個換行符。這是在檔案中指定的read_line()。
解決您的問題的一種可能方法是修剪字串。例子:
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"無論如何。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/457658.html
上一篇:帶有if的for回圈,else不起作用,因為它正在列印elseif部分,即使元素在陣列中
下一篇:每次出現元音時反轉字串的函式?
