宏
如果连续使用
以下是我想要实现的一个示例:
期望的输出结果应该是(
实际输出结果为:
另一方面,
在Python(3.x)中,这可以通过一行代码完成,因为
println!()
和print!()
可以分别打印带或不带换行符的字符串和变量。此外,stdin()
函数提供了从STDIN读取用户输入行的功能(stdin().read_line(&mut string)
)。如果连续使用
print
宏和read_line
函数,则应该可以在同一行上输出并输入。然而,当这种情况发生时,这两个操作将以相反的顺序执行(先读取STDIN,然后再打印语句)。以下是我想要实现的一个示例:
use std::io;
fn main() {
let mut input = String::new();
print!("Enter a string >> ");
io::stdin().read_line(&mut input).expect("Error reading from STDIN");
}
期望的输出结果应该是(
STDIN
代表用户被要求输入的点,实际上并不会被打印出来):Enter a string >> STDIN
实际输出结果为:
STDIN
Enter a string >>
另一方面,
println
宏不会改变顺序,但仍存在结尾换行符的问题:Enter a string >>
STDIN
在Python(3.x)中,这可以通过一行代码完成,因为
input
函数允许在STDIN提示之前使用字符串参数:variable = input("Output string")
在Rust文档中找不到类似于Python示例的解决方案后,我将任务分成了print
宏和read_line
函数。
print!
语句后刷新输出吗?通常情况下,stdout会在换行时被刷新。可以使用stdout().flush();
来刷新。 - belstprint
宏时必须手动刷新STDOUT,因为它不会在遇到换行符之前自动刷新。非常感谢您的帮助,@belst!请随意将其发布为答案,我将接受它作为最佳答案。 - computer_geek64