如何在 Rust 中打印输出而不拖尾换行?

Rust 中的宏 println!总是在每个输出的末尾留下一个换行符

println!("Enter the number : ");
io::stdin().read_line(&mut num);

给出输出

Enter the number :
56

我不希望用户的输入 56出现在一个新的行上。我该怎么做呢?

32793 次浏览

您可以使用 print!代替。

print!("Enter the number : ");
io::stdin().read_line(&mut num);

小心:

请注意,默认情况下,stdout 通常是行缓冲的,因此可能需要使用 io::stdout().flush()来确保立即发出输出。

这比乍看起来要复杂得多。其他答案提到了 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);
}