如何避免在 Rust 中使用 stdin 换行
How to avoid going to new line with stdin in Rust
我有这个代码:
fn main() {
let mut stdin = io::stdin();
let input = &mut String::new();
loop {
input.clear();
print!("Your age: ");
stdin.read_line(input);
print!("{}", input);
}
}
所以当我输入一些东西时,程序 returns "Your age:" 加上我的输入。
但是当我 运行 程序时,我不想在新行中写输入。
要在 Python 中做类似的事情,我可以写:
var = input("Your age: ")
如何避免换行?我确信这很简单,但我真的不知道该怎么做,我尝试了很多不同的东西...
您需要在阅读行之前刷新 stdout
:
use std::io::{self, Write};
fn main() {
let mut stdin = io::stdin();
let input = &mut String::new();
loop {
input.clear();
print!("Your age: ");
io::stdout().flush();
stdin.read_line(input);
print!("{}", input);
}
}
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.
我有这个代码:
fn main() {
let mut stdin = io::stdin();
let input = &mut String::new();
loop {
input.clear();
print!("Your age: ");
stdin.read_line(input);
print!("{}", input);
}
}
所以当我输入一些东西时,程序 returns "Your age:" 加上我的输入。 但是当我 运行 程序时,我不想在新行中写输入。 要在 Python 中做类似的事情,我可以写:
var = input("Your age: ")
如何避免换行?我确信这很简单,但我真的不知道该怎么做,我尝试了很多不同的东西...
您需要在阅读行之前刷新 stdout
:
use std::io::{self, Write};
fn main() {
let mut stdin = io::stdin();
let input = &mut String::new();
loop {
input.clear();
print!("Your age: ");
io::stdout().flush();
stdin.read_line(input);
print!("{}", input);
}
}
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.