You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 10:45:06