7_R*_*R3X 19 newline println rust
println!Rust中的宏总是在每个输出的末尾留下换行符.例如
println!("Enter the number : ");
io::stdin().read_line(&mut num);
Run Code Online (Sandbox Code Playgroud)
给出输出
Enter the number :
56
Run Code Online (Sandbox Code Playgroud)
我不希望用户的输入56在新行上.我该怎么做呢?
小智 29
这比乍看之下看起来更棘手.其他答案提到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);
}
Run Code Online (Sandbox Code Playgroud)
sja*_*agr 23
您可以改用print!宏.
print!("Enter the number : ");
io::stdin().read_line(&mut num);
Run Code Online (Sandbox Code Playgroud)
谨防:
请注意,默认情况下stdout经常是行缓冲的,因此可能需要使用它
io::stdout().flush()来确保立即发出输出.