生锈的println!问题-println宏内的行为异常

时间:2019-09-21 10:31:35

标签: 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

为什么\n的marco中有额外的println!。根据我的编码经验,我会假设以下内容:

Your input: 15
Your input: 15

但是要获得此输出,我必须使用以下代码:

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

我不明白为什么println! marco输出两次\n。如果我想在第一行的结尾处\n,使用这两个马科斯怎么办,那将是不可能的。我错过了重要的东西吗?

1 个答案:

答案 0 :(得分:0)

从stdin读取的字符串的末尾似乎有一个换行符。然后,println宏将换行符添加到末尾,从而产生两个换行符。

您应该在从stdin读取的文本的末尾删除换行符,或者如果不想这样做,请仅使用print。