如何在 Rust 中打印没有尾随换行符的输出?
How do I print output without a trailing newline in Rust?
Rust 中的宏 println!
总是在每个输出的末尾留下一个换行符。例如
println!("Enter the number : ");
io::stdin().read_line(&mut num);
给出输出
Enter the number :
56
我不希望用户的输入 56
换行。我该怎么做?
您可以改用 print!
macro。
print!("Enter the number : ");
io::stdin().read_line(&mut num);
注意:
Note that stdout is frequently line-buffered by default so it may be necessary to use io::stdout().flush()
to ensure the output is emitted immediately.
这比乍一看要复杂。其他答案提到了 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);
}
Rust 中的宏 println!
总是在每个输出的末尾留下一个换行符。例如
println!("Enter the number : ");
io::stdin().read_line(&mut num);
给出输出
Enter the number :
56
我不希望用户的输入 56
换行。我该怎么做?
您可以改用 print!
macro。
print!("Enter the number : ");
io::stdin().read_line(&mut num);
注意:
Note that stdout is frequently line-buffered by default so it may be necessary to use
io::stdout().flush()
to ensure the output is emitted immediately.
这比乍一看要复杂。其他答案提到了 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);
}