📜  rust 从标准输入读取行并返回一个 vec - Rust (1)

📅  最后修改于: 2023-12-03 15:19:53.118000             🧑  作者: Mango

Rust 从标准输入读取行并返回一个 Vec

在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 中的所有用户输入行。