如何用Rust读取文本文件并逐行提取多个不同类型的值
Rust 逐行读取多类型值文本文件实现
问题描述
我需要处理格式如下的文本文件,每行包含1个字符串类型值和1个整数类型值:
String int String int String int
我已经掌握单行仅读取一个值的方法,但不知道如何逐行读取多个不同类型的值。我刚接触Rust不久,在Java中可以通过while循环配合Scanner轻松实现该需求,想了解Rust中的对应实现方式。
解决方案
以下是调整后的可运行方案,使用sscanf第三方库简化格式解析逻辑:
前置依赖配置
首先在项目的Cargo.toml中添加sscanf依赖:
[dependencies] sscanf = "0.4"
读取代码实现
use std::fs; use std::io::{BufRead, BufReader, Error}; fn main() -> Result<(), Error> { // 此处替换为你的目标文件实际路径 let file_path = "your_file.txt"; let buff_reader = BufReader::new(fs::File::open(file_path)?); for line in buff_reader.lines() { let line_content = line?; // 按照「字符串 空格 整数」的格式解析当前行 let parsed_res = sscanf::scanf!(line_content, "{} {}", String, i32); // 可自行扩展解析成功/失败的处理逻辑,此处仅做打印演示 println!("解析结果:{:?}\n", parsed_res); } Ok(()) }
注:如果某行不符合预期格式,
scanf会返回Err类型,你可以根据业务需求调整错误处理逻辑,比如跳过非法行、输出错误告警等。
内容的提问来源于stack exchange,提问作者skrrskrr
相关产品推荐
相关产品推荐

