我对Rust很陌生,实际上刚刚开始。 (对于那些看过我之前删除的问题的人,你有最诚挚的道歉。)
我只是想构建一个简单的应用程序来提高我的技能,但我遇到了一个问题。我喜欢创造一些你可以输入东西的东西,对于那些知道dunnet的人来说,每条线路都有两个大于标志的东西。
但我还没有真正发现如何在两个标志后读取这些位。我在谷歌和StackOverflow上搜索过,但这是我得到的最好的:
//Starting a line
fn start(){print!(">>");}
//Seeking input and saving input
fn line_init() -> String
{
use std::io;
use std::io::BufRead;
start();
let mut input = String::new();
let stdin = io::stdin();
stdin.lock().read_line(&mut input).unwrap();
input
}
//Main function
fn main() {
loop
{
print!("{}", line_init());
}
}
但是当然,用户输入线落在一条新线上,这不是我想要的。这是我想要的C ++版本(实际上,我只是在Rust中复制我的C ++项目):
cout << ">>";
string input;
getline(cin, input);
很抱歉这篇文章有点长了!
答案 0 :(得分:0)
您是说用户在控制台上看到类似以下内容的内容吗?
hello
>>
而不是
>> hello
在这种情况下,问题是默认情况下Rust stdout是行缓冲的,所以除非你写一个换行符,否则什么都不会打印到控制台。
您需要在写入行前缀后刷新标准输出:
fn start(){
print!(">>");
io::stdout().flush().unwrap();
}