我正在尝试从ls命令获取输出。如何用换行符分隔字符串?目前,我的代码如下所示:
let input = std::old_io::stdin().read_line().ok().expect("Failed to read line");
for c in input.chars() {
if c == '\n' {
break;
} else {
println!("{}", c);
}
}
Run Code Online (Sandbox Code Playgroud)
这根本不起作用,我正在打印所有字符,包括\ n。
看看上的lines方法BufRead。该函数在缓冲区的所有行上返回迭代器。你可以得到一个BufRead从Stdin通过lock的功能。如果您查看其中的文档,lines将会发现它不会返回换行符。将此与read_line返回换行符char 的函数进行比较。
use std::io::BufRead;
fn main() {
// get stdin handle
let stdin = std::io::stdin();
// lock it
let lock = stdin.lock();
// iterate over all lines
for line in lock.lines() {
// iterate over the characters in the line
for c in line.unwrap().chars() {
println!("{}", c);
}
println!("next line");
}
}
Run Code Online (Sandbox Code Playgroud)