Rust 实践-终端对话(003)

209 阅读3分钟

输入输出

任务: 请实现一个程序就可以在终端获取你的名字 , 并输出 hello,你的名字! , 要处理掉输入名字两段的空格 , 并且特殊处理一下空的输入

初始化项目

首先,我们需要在 Rust 中创建一个新的项目。打开终端,执行以下命令来创建一个新的项目:

$ cargo new greeting_app
$ cd greeting_app

这将在当前目录下创建一个名为 greeting_app 的新文件夹,并初始化一个包含示例代码的 Rust 项目。

编写代码

在项目中找到 src/main.rs 文件,这是我们的程序入口。我们将编辑此文件。

use std::io; // 导入 Rust 标准库中的输入输出模块

fn main() {
    // 提示用户输入名字
    println!("请输入你的名字:");

    // 创建一个新的可变变量来存储用户的输入
    let mut name = String::new();

    // 读取用户输入并存储到 name 变量中
    io::stdin()
        .read_line(&mut name) // 获取用户输入的一行
        .expect("读取输入失败");

    // 去掉输入字符串末尾的换行符
    let name = name.trim();

    // 输出问候语
    println!("你好,{}!", name);
}

解释

  1. 导入 std::io 模块
    • 我们需要这个模块来处理用户的输入。std::io::stdin() 用于从标准输入读取数据。
  2. println!
    • println! 是一个宏,用于打印到控制台。它会自动添加一个换行符。
  3. 创建可变变量 name
    • 使用 String::new() 创建一个空的字符串,name 变量将用来存储用户的输入。
  4. 读取用户输入
    • io::stdin().read_line(&mut name) 让程序从标准输入(控制台)读取一行数据并将其存入 name 变量。&mut name 表示我们传递的是 name 的可变引用。
  5. 去掉换行符
    • name.trim() 会去掉字符串中的首尾空白字符(包括换行符),确保输出更整洁。
  6. 输出问候语
    • 使用 println! 输出带有用户输入名字的问候语。

编译和运行程序

在终端中,使用以下命令来编译并运行程序:

$ cargo run

当你运行程序时,它会提示你输入名字,输入后按回车,程序将显示一个包含你名字的问候语。

请输入你的名字:
Alice
你好,Alice!

更多提示信息

当你在没有输入任何名字的时候按下回车 , 响应你的会是"你好,!" , 我们班为了处理更多特定情况 , 我们可以处理用户输入时的错误,比如输入为空时给出提示:

use std::io;

fn main() {
    println!("请输入你的名字:");

    let mut name = String::new();

    io::stdin()
        .read_line(&mut name)
        .expect("读取输入失败");

    let name = name.trim();

    // 检查用户是否输入了空白字符
    if name.is_empty() {
        println!("你没有输入名字!");
    } else {
        println!("你好,{}!", name);
    }
}

在这个版本的程序中 , 如果用户没有输入名字 , 程序会显示一条警告信息 , 而不是直接出现空白的问候语录

总结

通过这个简单的命令行问候应用,你学习了 Rust 的几个基本概念:

  • 如何创建变量和使用 String 类型。
  • 如何通过 std::io::stdin() 获取用户输入。
  • 如何处理错误(例如使用 expect 方法)和去除多余的换行符。
  • 使用 println! 宏来输出到控制台。