rust 打印!问题 - println 宏中的奇怪行为

标签 rust console console-application rust-macros

<分区>

我目前正在开发一个简单的“用户输入”程序。用户可以输入一个数字,我得到了 std::io::stdin().read_line(&mut let_name_here).ok().expect("Error");。获得用户输入后,我想将其打印到控制台以供审核。

我注意到 println 中有奇怪的行为!宏。以下代码

println!("Your input: {}", let_name_here);
println!("Your input: {}", let_name_here);

输出这个:

Your input: 15

Your input: 15

为什么println!宏中多了一个\n。根据我的编码经验,我会做出以下假设:

Your input: 15
Your input: 15

但要实现此输出,我必须使用以下代码:

print!("Your input: {}", let_name_here);
print!("Your input: {}", let_name_here);

我不明白为什么 println! 宏输出 \n 两次。如果我想在第一行的末尾 \n ,那两个宏是不可能的,我该怎么办。我错过了什么重要的东西吗?

最佳答案

看起来您从标准输入读取的字符串末尾有一个换行符。然后 println 宏将换行符添加到末尾,从而产生两个换行符。

你应该去掉从标准输入读取的文本末尾的换行符,或者如果你不想这样做就使用打印。

关于 rust 打印!问题 - println 宏中的奇怪行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58039413/

相关文章:

rust - 指向带有生命周期参数的方法的函数指针的类型

rust - 如何关闭宏观卫生?

c++ - 如何在使用 kbhit() 和 getch() 时清除 key 缓冲区

java - System.out调用打印两次

c# - 保持控制台窗口打开

c++ - QtCreator 2.7.2 (Windows) 控制台应用程序 : How to paste into console?

rust - 'let x = x' 在 Rust 中有什么作用?

grails - Grails 3:控制台插件不在生产模式下出现

c# - 如何检查字符串格式

memory - 无法移出带有作为参数传递的可选成员的借用内容