如何在输出的同一行从键盘读取字符串?
How to read a string from keyboard on the same line with output?
我正在读取这样的字符串:
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)
如何实现?
添加对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);
}
接受的答案是正确的:您需要在 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());
}
我正在读取这样的字符串:
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)
如何实现?
添加对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);
}
接受的答案是正确的:您需要在 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());
}