如何将文件中的 .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);
}
我正在尝试弄清楚如何将文件中的特定行解析为 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);
}