Chr*_*oen 3 stdin input line 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);
}
}
Run Code Online (Sandbox Code Playgroud)
因此,当我输入某些内容时,程序会返回“您的年龄:”加上我的输入。但是当我运行程序时,我不想在新行中写入输入。要在 Python 中执行类似的操作,我可以编写:
var = input("Your age: ")
Run Code Online (Sandbox Code Playgroud)
如何避免转入新线路?我确信这很简单,但我真的不知道该怎么做,我尝试了很多不同的东西......
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);
}
}
Run Code Online (Sandbox Code Playgroud)
从print!文档中:
请注意,默认情况下 stdout 通常是行缓冲的,因此可能需要使用它
io::stdout().flush()来确保立即发出输出。