如何在Rust中将有效字符串转换为i128?

xuo3flqw  于 2023-01-26  发布在  其他
关注(0)|答案(1)|浏览(128)
  • *(新手入门)**我正在编写一个简单的程序,它可以打印出0和一个终端参数中的数字之间的数字,我想把这个数字从字符串转换为i128。实现这个目标需要什么步骤?

我的当前代码:

use std::env;
fn main()
{
    let args: String = env::args().skip(1).collect::<Vec<String>>().join(" ");
    println!("{}", 0..args.parse::<i128>().unwrap());
}
expecting: (Input: 10)
0
1
2
3
4
5
6
7
8
9
10

得到:

thread 'main' panicked at 'called `Result::unwrap()` on an `Err` value: ParseIntError { kind: Empty }', src/main.rs:11:40
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
g9icjywg

g9icjywg1#

要从控制台获取输入,使用use std::io;。另外,你不能使用println!()宏打印一个范围,你必须使用for循环来完成。
注意:read_line()不会从输入中删除换行符,因此您需要在解析输入字符串之前删除换行符。
下面是一个程序来接受用户输入和打印范围从0到用户输入:

use std::io;

fn main() -> io::Result<()>
{    
    let mut user_input = String::new();
    println!("Enter a number: ");
    let stdin = io::stdin();
    stdin.read_line(&mut user_input)?;    
    let num: i128 = user_input.trim_end().parse().unwrap();
    for x in 0..=num {
        println!("{}", x);
    }
    Ok(())
}

相关问题