首页 > 解决方案 > print!() 在输入输入后执行

问题描述

我想知道为什么这里的print!()宏在read_line之后执行

// ./src/main.rs
use std::io;

fn main() {
    print!("Input : ");
    let stdin = io::stdin();
    let mut input = String::new();
    stdin.read_line(&mut input).expect("Couldn't read_line");
}

这段代码打印出来:

   heyy
   Input : 

但我希望:

Input : heyy

标签: inputprintingrust

解决方案


您可以在此处阅读 Rust 文档:https ://doc.rust-lang.org/std/macro.print.html

具体来说,这一行:

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

在使用大多数语言的终端时,这很常见。stdout在几乎所有终端上都有缓冲。您可以在某些 AFAIK 上将其关闭,但您最好按照他们的建议调用 flush 或者我相信如果您向其写入新行,大多数终端都会刷新其输出。


推荐阅读