【问题标题】:How to read a string from keyboard on the same line with output? [duplicate]如何在输出的同一行从键盘读取字符串? [复制]
【发布时间】:2015-09-13 13:28:36
【问题描述】:

我正在读取这样的字符串:

print!("Input string: "); 

let string: String = String::new();
std::io::stdin().read_line(&mut string);

当我启动程序时,我看到:

(write a string here)
Input string:

但我需要:

Input string: (write a string here)

如何实现?

【问题讨论】:

    标签: string io rust


    【解决方案1】:

    添加对stdout().flush() 的调用以在调用read_line 之前强制缓冲区输出:

    fn main() {
       print!("Input string: "); 
       std::io::stdout().flush();
       let mut string: String = String::new();
       std::io::stdin().read_line(&mut string);
    }
    

    【讨论】:

      【解决方案2】:

      接受的答案是正确的:您需要在read_line 之前调用stdout().flush()。但是代码不会在 Rust 1.6.0 上编译。以下更改将使其编译。他们还展示了如何使用生成的字符串:

      use std::io::prelude::*;
      use std::io;
      
      fn main() {
          print!("Input string: ");
          io::stdout().flush().ok().expect("Could not flush stdout");
          let mut string: String = String::new();
          let _ = std::io::stdin().read_line(&mut string);
          println!("{}", string.trim());
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-12-04
        • 2012-08-03
        • 1970-01-01
        • 1970-01-01
        • 2021-06-26
        • 2020-09-25
        • 2015-10-11
        • 2017-06-24
        相关资源
        最近更新 更多