打印从stdin读取的字符串时如何忽略换行符?

问题描述 投票:2回答:2

我试着编写一些从stdin读取名称并打印出来的代码。问题是打印变量后立即断行,并在下一行打印变量后面的字符:

use std::io;

fn main() {
    println!("Enter your name:");
    let mut name = String::new();
    io::stdin().read_line(&mut name).expect("Failed To read Input");
    println!("Hello '{}'!", name);
}

'!'打印在下一行,这不是预期的位置。

enter image description here

input printing rust
2个回答
4
投票

使用.trim()删除字符串上的空格。这个例子应该有效。

use std::io;

fn main() {
    println!("Enter your name:");
    let mut name = String::new();
    io::stdin().read_line(&mut name).expect("Failed To read Input");
    println!("Hello '{}'!", name.trim());
}

如果您只需要从字符串的一侧删除空格更改,还有trim_start().trim_end()


0
投票

如果你只想删除最后一个字符(在这种情况下是换行符),你应该使用.pop()而不是.trim()

当您使用.trim()时,将删除前导和尾随空格,因此将删除空格,制表符,换行符以及字符串开头和结尾的其他空格。

use std::io;

fn main() {
    println!("Enter your name:");
    let mut name = String::new();
    io::stdin().read_line(&mut name).expect("Failed To read Input");
    name.pop();
    println!("Hello '{}'!", name);
}
© www.soinside.com 2019 - 2024. All rights reserved.