Rust中的宏println!
总是在每个输出的末尾留下换行符。例如
println!("Enter the number : ");
io::stdin().read_line(&mut num);
给出输出
Enter the number :
56
我不希望用户的输入56
位于新行上。我该怎么做?
答案 0 :(得分:21)
print!
宏,但它并不那么简单。您可能需要刷新标准输出,因为它可能不会立即写入屏幕。 flush()
是std::io::Write
的一部分,因此需要在其范围内工作(这是一个非常容易的早期错误)。
use std::io;
use std::io::Write; // <--- bring flush() into scope
fn main() {
println!("I'm picking a number between 1 and 100...");
print!("Enter a number: ");
io::stdout().flush().unwrap();
let mut val = String::new();
io::stdin().read_line(&mut val)
.expect("Error getting guess");
println!("You entered {}", val);
}
答案 1 :(得分:20)
您可以使用print!
macro代替。
print!("Enter the number : ");
io::stdin().read_line(&mut num);
请注意:
请注意,默认情况下stdout经常是行缓冲的,因此可能需要使用
io::stdout().flush()
来确保立即发出输出。