📜  Rust 中的标准 IO(1)

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

Rust 中的标准 IO

Rust 中的标准库提供了一系列输入/输出(IO)功能,用于读取和写入数据。这些功能包含在 std::io 模块中。该模块中包含了代表文件、标准输入和标准输出的类型,以及其他一些 IO 相关的类型和 trait。

标准输入和标准输出

Rust 标准库提供了处理标准输入和标准输出的功能。标准输入通常对应着用户在终端中输入的数据,而标准输出则是在终端中打印输出内容。

从标准输入读取数据

有多种方法可以从标准输入中读取数据。下面我们来看一下如何使用 std::io::stdin() 函数获取标准输入的句柄。

use std::io;

fn main() {
    let mut input = String::new();
    match io::stdin().read_line(&mut input) {
        Ok(_) => {
            println!("输入的字符串是: {}", input);
        }
        Err(e) => {
            println!("读取标准输入失败: {}", e);
        }
    }
}

在上面的代码中,我们首先创建了一个空的字符串变量 input,然后使用 io::stdin() 函数获取标准输入的句柄,并调用 read_line() 方法读取用户输入的数据。

输出数据到标准输出

通过使用 std::io::stdout() 函数获取标准输出的句柄,我们可以将数据输出到标准输出。下面是一个简单的例子。

use std::io::{self, Write};

fn main() {
    let message = "你好,世界!\n";
    let mut stdout = io::stdout();
    stdout.write_all(message.as_bytes()).unwrap();
}

在上面的代码中,我们创建了一个名为 message 的字符串,然后使用 std::io::stdout() 函数获取标准输出的句柄,并最后将 message 内容输出到标准输出中。

格式化输出

在 Rust 中,我们可以使用格式化宏来格式化输出内容。最常用的格式化宏是 println!。下面是一个示例。

fn main() {
    let name = "Rustacean";
    let age = 4;
    println!("Hello, {}! You are {} years old.", name, age);
}

在上面的代码中,我们使用 {} 占位符来表示将要输出的内容,这些占位符后面的参数将填充这些位置。

文件读写

除了标准输入和标准输出之外,Rust 标准库还提供了大量的文件读写相关方法。

从文件中读取数据

读取文件内容的方法之一是使用 std::fs::File 类型和 std::io::Read trait。下面是一个简单的例子。

use std::fs::File;
use std::io::{self, Read};

fn main() {
    let mut file = File::open("hello.txt").unwrap();
    let mut contents = String::new();
    file.read_to_string(&mut contents).unwrap();
    println!("文件内容是:\n{}", contents);
}

在上面的代码中,我们使用 std::fs::File 类型打开文件 hello.txt 并得到该文件的句柄。然后使用 std::io::Read trait 的 read_to_string() 方法,将文件中的内容读取到一个字符串变量中。

写入数据到文件

我们可以使用 std::fs::File 类型和 std::io::Write trait 来写入数据到文件中。下面是一个简单的例子。

use std::fs::File;
use std::io::{self, Write};

fn main() {
    let mut file = File::create("hello.txt").unwrap();
    let message = "Hello, 文件!\n";
    file.write_all(message.as_bytes()).unwrap();
}

在上面的代码中,我们使用 std::fs::File 类型创建一个名为 hello.txt 的新文件,并使用 std::io::Write trait 的 write_all() 方法将 message 字符串写入到文件中。

总结

在 Rust 中,我们可以使用 std::io 模块来处理标准输入和标准输出,以及读取和写入文件。这些功能使得 Rust 成为一个好的选择来开发需要处理输入输出数据的应用程序。