读取一行的一部分

Reading part of a line

我对 Rust 完全陌生,实际上今天才开始。 (对于那些看到我之前被删的问题的人,我向你们致以最诚挚的歉意。)

我只是想构建一个简单的应用程序来提高我的技能,但我遇到了一个问题。我喜欢创建一些你可以直接输入内容的东西,对于那些了解 dunnet 的人,每行以两个大于符号开始。

但我还没有真正找到如何读取两个符号后的位。我搜索了 Google 和 Whosebug,但这是我得到的最好的:

//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);

抱歉,post 有点长了!

您的意思是用户在控制台上看到类似下面的内容吗?

hello
>>

而不是

>> hello

?

在那种情况下,问题是 Rust stdout 默认是行缓冲的,所以除非你写一个换行符,否则什么都不会打印到控制台。

您需要在写入行前缀后刷新标准输出:

fn start(){
    print!(">>");
    io::stdout().flush().unwrap();
}