如何避免在Rust中使用stdin转到新行

时间:2016-08-25 20:20:34

标签: input rust line stdin

我有这段代码:

fn main() {
    let mut stdin = io::stdin();
    let input = &mut String::new();

    loop {
        input.clear();
        print!("Your age: ");
        stdin.read_line(input);
        print!("{}", input);
    }
}

因此,当我输入内容时,程序将返回"您的年龄:"加上我的意见。 但是当我运行程序时,我不想在新行中写入输入。 要在Python中做类似的事情,我可以写:

var = input("Your age: ")

如何避免换行?我确定它很简单,但我真的不知道该怎么做,我尝试了很多不同的东西......

1 个答案:

答案 0 :(得分:3)

在阅读该行之前,您需要刷新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);
    }
}

来自print! documentation

  

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