簡體   English   中英

Rust:通過索引訪問文件中的行,或者是否有另一種方法來比較兩行

[英]Rust: access line in file by index, or is there another way to compare two lines

我有一個簡單的 txt 文件,每行一個值。 是否有可能比較兩條線?

我正在尋找一種方法來索引每一行,然后將索引 [n] 與索引 [n+1] 進行比較。 現在我可以打印每一行,但不能比較條目。

這是我的代碼:

use std::fs::File;
use std::env;
use std::io::{self, BufReader, BufRead};


fn read_file(filename: &String) -> io::Result<()> {
    let file = File::open(filename)?;
    let content = BufReader::new(file);

    for line in content.lines() {
        println!("{}", line.unwrap());
    }

    Ok(())
}


fn main() {
    let args: Vec<String> = env::args().collect();
    let filename = &args[1];
    read_file(filename).expect("error reading file");
}

一種解決方案是將所有行收集到一個向量中並使用std::iter::zip function

fn read_file(filename: &String) -> io::Result<()> {
    let file = File::open(filename)?;
    let content = BufReader::new(file);

    let lines: Vec<String> = content
        .lines()
        .map(|line| line.expect("Something went wrong"))
        .collect();
    
    for (current, next) in lines.iter().zip(lines.iter().skip(1)) {
        println!("{}, {}", current, next)
    }
    Ok(())
}

所以對於有內容的輸入文件,

1
2
3
4

read_file function 將打印

1, 2
2, 3
3, 4

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM