鉴于以下代码,我如何专门检查EOF?或者更确切地说,我如何区分"这里什么也没有"和"爆炸"?
match io::stdin().read_line() {
Ok(l) => print!("{}", l),
Err(_) => do_something_else(),
}
Run Code Online (Sandbox Code Playgroud)
She*_*ter 12
从以下文档read_line:
如果成功,此函数将返回读取的总字节数.
返回的空缓冲区[ sic ]表示流已达到EOF.
这意味着我们可以检查零的成功值:
use std::io::{self, BufRead};
fn main() -> io::Result<()> {
let mut empty: &[u8] = &[];
let mut buffer = String::new();
let bytes = empty.read_line(&mut buffer)?;
if bytes == 0 {
println!("EOF reached");
}
Ok(())
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5109 次 |
| 最近记录: |