5 个版本 (3 个重大变更)
0.4.0 | 2019 年 6 月 1 日 |
---|---|
0.3.0 | 2018 年 4 月 6 日 |
0.2.0 | 2017 年 2 月 4 日 |
0.1.1 | 2016 年 12 月 25 日 |
0.1.0 | 2016 年 12 月 21 日 |
#333 在 解析工具
12KB
199 行
input-stream
一个 Rust 库,提供类似于 C++ *fstreams 的输入流。
用法
许可证
input-stream
采用 MIT 许可证分发。
有关详细信息,请参阅 LICENSE.txt
lib.rs
:
一个小的实用库,用于类似 C++ istream 的输入解析。
它公开了一个结构体 InputStream
,该结构体包装了实现了 std::io::BufRead
的任何对象。
它可以解析实现了 std::str::FromStr
的任何类型。
用法
此软件包位于 crates.io 上,可以通过将 input-stream
添加到项目 Cargo.toml
中的依赖项来使用。
[dependencies]
input-stream = "0.3.0"
并在 crate 根目录中添加以下内容
extern crate input_stream;
示例
use std::io;
use input_stream::InputStream;
let mut input = InputStream::new(buf_reader);
let value = input.scan::<bool>();
match value {
Ok(value) => println!("Successfully read boolean: {}", value),
Err(err) => println!("Error reading value: {:?}", err)
}
从标准输入读取
use std::io;
use input_stream::InputStream;
let stdin = io::stdin();
let mut input = InputStream::new(stdin.lock());
let integer: i32 = input.scan().expect("An integer");
let string: String = input.scan().expect("A string");
println!("Read the number: {} and the string {}", integer, string);
或从文件读取
use std::io::{self, BufReader};
use std::fs::File;
use input_stream::InputStream;
let mut input = InputStream::new(
BufReader::new(File::open("name_of_file.txt").expect("a file named name_of_file.txt")));
let value: f32 = input.scan().expect("A floating point number");
println!("Read a float: {}", value);