输入输出流
输入输出是人机交互的一种方式。最常见的输入输出是标准输入输出和文件输入输出(当然还有数据库输入输出,本节不讨论这部分)。
标准输入
标准输入也叫作控制台输入,是常见输入的一种。
例子1:
use std::io;
fn read_input() -> io::Result<()> {
let mut input = String::new();
try!(io::stdin().read_line(&mut input));
println!("You typed: {}", input.trim());
Ok(())
}
fn main() {
read_input();
}例子2:
这里体现了常见的标准输入的处理方式。两个例子都是声明了一个可变的字符串来保存输入的数据。 他们的不同之处在在于处理潜在输入异常的方式。
例子 1 使用了
try!宏。这个宏会返回Result<(), io::Error>类型,io::Result<()>就是这个类型的别名。所以例子 1 需要单独使用一个read_input函数来接收这个类型,而不是在main函数里面,因为main函数并没有接收io::Result<()>作为返回类型。例子 2 使用了
Result<(), io::Error>类型的expect方法来接收io::stdin().read_line的返回类型。并处理可能潜在的 io 异常。
标准输出
标准输出也叫控制台输出,Rust 里面常见的标准输出宏有 print! 和 println!。它们的区别是后者比前者在末尾多输出一个换行符。
例子1:
例子2:
这里两个例子都比较简单。读者可以运行一下查看输出结果对比一下他们的区别。 值得注意的是例子 2 中,{ } 会被 "some" 所替换。这是 rust 里面的一种格式化输出。
文件输入
文件输入和标准输入都差不多,除了输入流指向了文件而不是控制台。下面例子采用了模式匹配来处理潜在的输入错误
例子:
文件输出
文件输出和标准库输出也差不多,只不过是把输出流重定向到文件中。下面详细看例子。
例子:
Last updated
Was this helpful?