Input 读一行的一部分

Input 读一行的一部分,input,console,rust,Input,Console,Rust,我对生锈完全是个新手,事实上今天才开始。(对于那些看到我先前删除的问题的人,我向你们致以最诚挚的歉意。) 我只是想建立一个简单的应用程序来提高我的技能,但我遇到了一个问题。我喜欢创造一些你可以直接输入的东西,对于那些知道dunnet的人来说,每行开头都有两个大于的符号 但我还没有真正学会如何读懂这两个符号后面的字。我在Google和StackOverflow上搜索过,但这是我得到的最好的结果: //Starting a line fn start(){print!(">>");}

我对生锈完全是个新手,事实上今天才开始。(对于那些看到我先前删除的问题的人,我向你们致以最诚挚的歉意。)

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

但我还没有真正学会如何读懂这两个符号后面的字。我在Google和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++版本(实际上,我只是复制了我的C++项目中的锈):


cout您的意思是用户在控制台上看到如下内容吗

hello
>>
而不是

>> hello
?

在这种情况下,问题是Rust标准输出在默认情况下是行缓冲的,因此除非您写一个换行符,否则不会向控制台打印任何内容

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

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

为什么这个标签被标记为C++?OOP,抱歉,只是一个意外。我认为它是一个副本…我以前从未找到过那篇文章。谢谢,@ker!再说一次,很抱歉我的错误解释。我应该删除这个问题还是什么?至于回答,我误解了他的答案。如果这个问题的答案回答了你的,我会把这个标记为重复。对不起,我还是不明白你想表达什么。我的版本 Stand()>代码>函数使你的RID程序的一块正确的行为与C++代码一样,这是我假设你想要的。如果不是这样,请更正您的问题。谢谢!我不明白你的意思,但现在我明白了第二个例子是用户应该看到的,对吗?如果你这么说,我想是的,是的,非常感谢!现在我将继续与铁锈为伍。:-)
fn start(){
    print!(">>");
    io::stdout().flush().unwrap();
}