输入输出

收藏602

阅读11171

更新时间2025-08-27

本章讨论如何从标准输入(键盘)接受值并将值显示到标准输出(控制台)。 在本章中,我们还将讨论传递命令行参数。

读取器和写入器类型

Rust 的输入和输出标准库功能围绕两个特征进行组织 −

  • Read
  • Write
Sr.No 特征 & 描述 示例
1

Read

实现 Read 的类型具有面向字节输入的方法。 他们被称为读

Stdin,File
2

Write

实现 Write 的类型支持面向字节和 UTF-8 文本输出。 他们被称为写。

Stdout,File

读取特征

读取器是您的程序可以从中读取字节的组件。 示例包括从键盘、文件等读取输入。此特征的 read_line() 方法可用于从文件或标准输入流读取数据,一次一行。

Sr.No 特征 方法 & 描述
1 Read

read_line(&mut line)->Result

读取一行文本并将其附加到 line(字符串)。 返回值是 io::Result,即读取的字节数。

示例 − 从控制台读取 − stdin()

Rust 程序可能必须在运行时接受用户的值。 以下示例从标准输入(键盘)读取值并将其打印到控制台。

fn main(){
   let mut line = String::new();
   println!("Enter your name :");
   let b1 = std::io::stdin().read_line(&mut line).unwrap();
   println!("Hello , {}", line);
   println!("no of bytes read , {}", b1);
}

stdin()函数返回当前进程的标准输入流的句柄,可以对其应用read_line函数。 当遇到行尾字符时,该函数尝试读取输入缓冲区中存在的所有字符。

输出

Enter your name :
Mohtashim
Hello , Mohtashim
no of bytes read , 10

写特征

Write是您的程序可以写入字节的组件。 示例包括将值打印到控制台、写入文件等。此特征的 write() 方法可用于将数据写入文件或标准输出流。

Sr.No 特征 方法 & 描述
1 Write

write(&buf)->Result

将切片 buf 中的一些字节写入底层流。 它返回一个 io::Result,即写入的字节数。

示例 - 写入控制台 - stdout()

print!println! 宏可用于在控制台上显示文本。 不过,您也可以使用write()标准库函数在标准输出中显示一些文本。

让我们考虑一个示例来理解这一点。

use std::io::Write;
fn main() {
   let b1 = std::io::stdout().write("Tutorials ".as_bytes()).unwrap();
   let b2 = std::io::stdout().write(String::from("Point").as_bytes()).unwrap();
   std::io::stdout().write(format!("\nbytes written {}",(b1+b2)).as_bytes()).unwrap();
}

输出

Tutorials Point
bytes written 15

stdout()标准库函数返回当前进程的标准输出流的句柄,可以对其应用write函数。 write() 方法返回一个枚举 Result。 unwrap() 是一种从枚举中提取实际结果的辅助方法。 如果发生错误,unwrap 方法将发送panic。

注意 − 文件IO将在下一章讨论。

命令行参数

命令行参数在执行之前传递给程序。 它们就像传递给函数的参数。 命令行参数可用于将值传递给 main() 函数。 std::env::args() 返回命令行参数。

示例

以下示例将值作为命令行参数传递给 main() 函数。 该程序以文件名 main.rs 创建.

//main.rs
fn main(){
   let cmd_line = std::env::args();
   println!("No of elements in arguments is :{}",cmd_line.len()); 
   // 打印传递的值总数
   for arg in cmd_line {
      println!("[{}]",arg); //打印作为命令行参数传递的所有值
   }
}

程序编译后将生成一个文件main.exe。 多个命令行参数应以空格分隔。 从终端以 main.exe hello Tutorialspoint 的形式执行 main.exe。

注意hellotutorialspoint 是命令行参数。

输出

No of elements in arguments is :3
[main.exe]
[hello]
[tutorialspoint]

输出显示 3 个参数,因为 main.exe 是第一个参数。

示例

以下程序计算作为命令行参数传递的值的总和。 由空格分隔的列表整数值被传递给程序。

fn main(){
   let cmd_line = std::env::args();
   println!("No of elements in arguments is 
   :{}",cmd_line.len()); 
   // 传递的元素总数

   let mut sum = 0;
   let mut has_read_first_arg = false;

   //迭代所有参数并计算它们的总和

   for arg in cmd_line {
      if has_read_first_arg { // 跳过第一个参数,因为它是 exe 文件名
         sum += arg.parse::().unwrap();
      }
      has_read_first_arg = true; 
      // 将标志设置为 true 以计算后续参数的总和。
   }
   println!("sum is {}",sum);
}

作为 main.exe 1 2 3 4 执行程序时,输出将为 −

No of elements in arguments is :5
sum is 10

相关

视频

RELATED VIDEOS

更多

免费

phpStudy极速入门视频教程

免费

Midjourney基础课程
初级 Midjourney基础课程

11149次学习

收藏

免费

极客学院Git使用视频教程

免费

尚观shell视频教程
高级 尚观shell视频教程

15709次学习

收藏

免费

尚观Linux入门视频教程
初级 尚观Linux入门视频教程

42887次学习

收藏

免费

尚观Linux初级视频教程
初级 尚观Linux初级视频教程

40264次学习

收藏

免费

尚观Linux中级视频教程
中级 尚观Linux中级视频教程

48298次学习

收藏

免费

尚观Linux高级视频教程
高级 尚观Linux高级视频教程

41982次学习

收藏

科技资讯

更多

精选课程

更多
前端入门_HTML5
前端入门_HTML5

共29课时

61.7万人学习

CSS视频教程-玉女心经版
CSS视频教程-玉女心经版

共25课时

39.3万人学习

JavaScript极速入门_玉女心经系列
JavaScript极速入门_玉女心经系列

共43课时

70.9万人学习

独孤九贱(1)_HTML5视频教程
独孤九贱(1)_HTML5视频教程

共25课时

61.6万人学习

独孤九贱(2)_CSS视频教程
独孤九贱(2)_CSS视频教程

共22课时

23万人学习

独孤九贱(3)_JavaScript视频教程
独孤九贱(3)_JavaScript视频教程

共28课时

33.9万人学习

独孤九贱(4)_PHP视频教程
独孤九贱(4)_PHP视频教程

共89课时

125万人学习

关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号