我想从标准输入中读取一行,并将其存储在一个字符串变量中,然后将字符串值解析为一个u32整数值。read_line()方法读取2个额外的UTF-8值,这会导致解析方法死机。
下面是我试着去掉的回车和新行:
use std::io;
use std::str;
fn main() {
let mut input = String::new();
match io::stdin().read_line(&mut input) {
Ok(n) => {
println!("{:?}", input.as_bytes());
println!("{}", str::from_utf8(&input.as_bytes()[0..n-2]).unwrap());
}
Err(e) => {
println!("{:?}", e);
}
}
}
在Rust中做这件事最惯用的方式是什么?
发布于 2019-05-23 04:42:22
String
有一个返回修剪后的字符串片的trim
method:
use std::io;
use std::str;
fn main() {
let mut input = String::new();
match io::stdin().read_line(&mut input) {
Ok(_) => {
let trimmed_input = input.trim();
println!("{:?}", trimmed_input.as_bytes());
println!("{}", trimmed_input);
}
Err(e) => {
println!("{:?}", e);
}
}
}
"test"
输入的结果:
[116, 101, 115, 116]
test
https://stackoverflow.com/questions/56264376
复制相似问题