读取一行的一部分
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();
}
我对 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();
}