📜  Rust 中的标准 I/O

📅  最后修改于: 2022-05-13 01:55:07.200000             🧑  作者: Mango

Rust 中的标准 I/O

在本文中,我们将探讨 Rust 编程语言中的标准输入和标准输出。通常,标准输入通过键盘提供,标准输出在控制台中显示值。

Rust 中有两个核心特征,围绕着 Rust 的标准输入和输出。它们提供了一个用于输入输入和显示输出的接口。下面列出了这两个特性:

  • 读取特征
  • 写特征

让我们详细探讨它们。

读取特性:

从输入设备以 Bytes 的形式读取输入是由称为Readers的 Rust 组件完成的。 read_line()函数用于从输入流或文件中一次读取一行数据。看看下面的例子:

例子:



Rust
use std::io;
 
fn main() {
    println!("Enter a name:");
    let mut guess = String::new();
 
    io::stdin().read_line(&mut guess).expect("failed to readline");
 
    print!("You entered {}", guess);
}


Rust
use std::io::Write;
fn main() {
   let var1 = std::io::stdout().write("Geeksforgeeks ".as_bytes()).unwrap();
   let var2 = std::io::stdout().write(
     String::from("is the best.").as_bytes()).unwrap();
   std::io::stdout().write(format!(
     "\n{} bytes of data has been written!",(var1+var2)).as_bytes()).unwrap();
}


Rust
fn main() {
  
  // printed in new line
  print!("Hello, Geeks");
  print!(" Welcome to GeeksForGeeks");
}


Rust
fn main() {
 
 // printed in new line
  println!("Hello, Geeks");
  println!("Welcome to GeeksForGeeks");
}


Rust
use std::io;
 
fn main() {
   println!("Enter a name:");
   let mut guess = String::new();
   io::stdin().read_line(&mut guess).expect("failed to readline");
   print!("You entered {}", guess);
}


Rust
use std:: env;
 
fn main() {
  let args: Vec = env::args().collect();
   
  for argument in args.iter() {
   
    println!("{}", argument);
  }
}


输出:

与其他编程语言一样,我们使用 std::io(标准输入/输出)库来获取输入,使用类似于 C 语言中的scanf()read_line函数letmut是用于创建可以保存给定字符串的可变变量的关键字。

写入特性:

Rust 中的 Writers 是可以将数据以字节为单位写入文件或输出流的程序。 write() 方法用于此目的。看看下面的例子。

例子:

use std::io::Write;
fn main() {
   let var1 = std::io::stdout().write("Geeksforgeeks ".as_bytes()).unwrap();
   let var2 = std::io::stdout().write(
     String::from("is the best.").as_bytes()).unwrap();
   std::io::stdout().write(format!(
     "\n{} bytes of data has been written!",(var1+var2)).as_bytes()).unwrap();
}

输出:



Geeksforgeeks is the best.
26 bytes of data has been written!

在上面的示例中, write()函数应用于 stdout() 标准库函数返回的标准输出流。 write() 方法返回一个枚举unwrap()函数进一步提取该枚举以显示结果。

输入/输出宏:

在几乎所有主要的编程语言中,print函数是最重要和最常用的函数之一,用于打印任何输出。 Rust 有和 C 语言中的printf类似的打印!() 和println !()函数。我们将看到如何在 Rust 中打印输出。 Rust打印的主要区别 &打印!是那个印刷品!输出在同一行,而println !在新行中给出输出。

打印!

程序的打印宏函数几乎类似于C++中的cout ,没有endl (或)\n。打印示例如下

例子:

fn main() {
  
  // printed in new line
  print!("Hello, Geeks");
  print!(" Welcome to GeeksForGeeks");
}

输出:

Hello, Geeks Welcome to GeeksForGeeks

打印!

println是打印到标准输出的宏,带有换行符。我们可以使用println !仅用于程序的主要输出。

例子:

fn main() {
 
 // printed in new line
  println!("Hello, Geeks");
  println!("Welcome to GeeksForGeeks");
}

输出:



Hello, Geeks
Welcome to GeeksForGeeks

读取输入

与其他编程语言一样,我们使用 std::io(standard input/output) 库来获取输入,使用类似于 C 语言中的scanf () 的read_line函数。 letmut是用于创建可以保存给定字符串的可变变量的关键字。

use std::io;
 
fn main() {
   println!("Enter a name:");
   let mut guess = String::new();
   io::stdin().read_line(&mut guess).expect("failed to readline");
   print!("You entered {}", guess);
}

输出:

Enter a name: geeksforgeeks
You entered geeksforgeeks

命令行参数:

命令行参数是通过控制台传递给程序进行处理的值。这类似于将参数值传递给main()函数std::env::args()用于返回命令行参数。看看下面的例子。

例子:

在这个例子中,我们将使用命令行参数将值传递给程序的主函数。

use std:: env;
 
fn main() {
  let args: Vec = env::args().collect();
   
  for argument in args.iter() {
   
    println!("{}", argument);
  }
}

让我们检查一下我们在上面的例子中做了什么。首先,我们需要使用std::env来使用环境模块然后我们创建一个新的字符串向量。现在,这个向量只是读取我们的每个参数。这意味着我们可以说向量的类型是一个等于变量的字符串,并且args.collect()函数用于从命令行收集参数。在这里,我们创建了一个新的向量,用于保存字符串,这等于收集的所有命令行参数。

现在在你的 shell 中使用以下命令来激活 Rust 脚本:

cargo run

然后传入参数如下:

cargo run YOUR_ARGUMENT

在这里,为了举例,我们将传递字符串“dom”。

输出: