如何将文件中的 .nth() 行解析为整数?

How can I parse the .nth() line in a file as an integer?

我正在尝试弄清楚如何将文件中的特定行解析为 u32,但是当我尝试解析 Option<String> 时,我总是得到 method not found in Option<String>

有没有办法解析它或者我是不是处理错了?

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

fn main() {
    let reader = BufReader::new(File::open("input").expect("Cannot open file"));
    let lines = reader.lines();
    let number: u32 = lines.nth(5).unwrap().ok().parse::<u32>();

    println!("{}", number);
}

您无法解析 Option<String> 中的数字,因为如果它是 None 则没有任何内容可解析。您必须首先打开 Option(或进行适当的错误处理):

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

fn main() {
    let reader = BufReader::new(File::open("input").expect("Cannot open file"));
    let number: u32 = reader.lines()
        .nth(5)
        .expect("input is not 5 lines long")
        .expect("could not read 5th line")
        .parse::<u32>()
        .expect("invalid number");

    println!("{}", number);
}