Snippet正在尝试计算以下读取的字节数 sample.txt
为sample.txt
one two three four five six
seven eight nine ten eleven twelve
thirteen fourteen fifteen sixteen
%
Run Code Online (Sandbox Code Playgroud)
情况1:
let file = File::open(fname)?;
let mut reader = BufReader::new(&file);
let mut buffer: Vec<u8> = vec![];
let num_bytes = reader.read_until(b'%', &mut buffer);
//println!("{}", String::from_utf8(buffer).unwrap());
println!("read_bytes: {}", num_bytes.unwrap());
Run Code Online (Sandbox Code Playgroud)
read_bytes: 101
案例2:
let file = File::open(fname)?;
let mut reader = BufReader::new(&file);
let mut num_bytes: u32 = 0;
for readline in reader.lines() {
if let Ok(line) = readline {
//println!("{}", line);
let bytes = line.as_bytes();
num_bytes += bytes.len() as u32;
if bytes == b"%" {
break;
}
}
}
println!("read_bytes: {}", num_bytes)
Run Code Online (Sandbox Code Playgroud)
read_bytes: 98
我似乎无法弄清楚为什么这两个案例输出的结果不同.任何帮助,谢谢
来自以下文档BufRead.lines:
从此函数返回的迭代器将生成实例
io::Result<String>.返回的每个字符串都 没有 换行符.
您的计数减少了3,因为数据中有3行,第二个示例中没有计算换行符.
| 归档时间: |
|
| 查看次数: |
59 次 |
| 最近记录: |