乐闻世界logo
搜索文章和话题

How can I read a single line from stdin in Rust?

4 个月前提问
3 个月前修改
浏览次数22

1个答案

1

在 Rust 中,从 stdin 读取一行通常会使用 std::io 模块中的 stdin 函数以及 BufRead trait 中的 lines 方法。以下是一个简单的例子,展示了如何使用 Rust 从标准输入读取一行(字符串):

rust
use std::io::{self, BufRead}; fn main() { // 创建一个 stdin 的句柄 let stdin = io::stdin(); // 从 stdin 读取一行 let mut line = String::new(); println!("请输入一行内容:"); match stdin.lock().read_line(&mut line) { Ok(_) => { // 如果成功,去除字符串末尾的换行符 let line = line.trim_end(); println!("你输入的行是:{}", line); }, Err(error) => { // 如果出现错误,打印错误信息 println!("错误读取行: {}", error); } } }

在这个例子中,我们首先导入了 std::io 模块的相关内容。然后在 main 函数中,我们获取 stdin 的句柄,接着创建一个新的空的 String 对象来存放将要读取的一行。我们使用 read_line 方法来读取用户输入的一行并将其存入这个 String 对象。read_line 方法返回一个 Result 类型,这有助于我们处理可能发生的任何错误。如果 read_line 成功,它会返回 Ok,包含读取的字节数;如果失败,它会返回一个 Err,包含错误信息。在这个例子中,我们通过模式匹配处理 Result,如果成功就打印输入的行,如果发生错误则打印错误信息。

请注意,read_line 方法会在行末保留换行符,所以我们使用了 trim_end 方法来去除字符串末尾的空白字符,包括换行符。这样我们就能得到一个干净的行字符串。

2024年6月29日 12:07 回复

你的答案