📅  最后修改于: 2023-12-03 15:19:53.118000             🧑  作者: Mango
在Rust中,我们可以通过使用 stdin()
来从标准输入读取用户输入。当我们需要读取多行输入时,一个常见的方法是将每行输入存储到一个 Vec
中。下面是一个演示如何在Rust中实现这个过程的示例程序。
use std::io::{self, BufRead};
fn main() {
let stdin = io::stdin();
let mut lines = Vec::new();
for line in stdin.lock().lines() {
let line = line.expect("Failed to read line");
if line.is_empty() {
break;
}
lines.push(line);
}
println!("User Input: {:?}", lines);
}
代码行 1-2:导入 Rust 中需要使用的库。
代码行 4-8:在程序中创建一个 stdin
实例。该实例由 Rust 标准库创建并保存在 io
模块中。注意,我们使用了 BufRead
trait 来读取输入缓冲区中的文本行。
代码行 9:创建一个空的 Vec
,用于存储用户输入的所有行。
代码行 11-15:对于 stdin.lock().lines()
中的每个文本行,程序会将其添加到 lines
中。在 lines
向量中存储文本行时,我们检查每行是否为空。如果是,则我们打破循环并停止读取输入。
代码行 17:程序输出存储在 lines
中的用户输入行。
您可以通过将上面的代码复制粘贴到 .rs 文件中并使用 rustc 编译它来运行这个 Rust 示例程序。
$ echo "hello
world
rust" | cargo run
Compiling user_input v0.1.0 (/user_input)
Finished dev [unoptimized + debuginfo] target(s) in 0.06s
Running `target/debug/user_input`
User Input: ["hello", "world", "rust"]
如上所述,我们使用 echo
来模拟用户输入并将其传递给程序。程序输出存储在 Vec
中的所有用户输入行。