How do I read multiple integers from a single line of stdin?

前端 未结 2 406
谎友^
谎友^ 2021-01-22 09:56

To learn Rust, I\'m looking at things like the HackerRank 30 days challenge, Project Euler, and other programming contests. My first obstacle is to read multiple integers from a

2条回答
  •  清歌不尽
    2021-01-22 10:18

    You can use the scan-rules crate (docs), which makes this kind of scanning easy (and has features to make it powerful too).

    The following example code uses scan-rules version 0.1.3 (file can be ran directly with cargo-script).

    The example program accepts two integers separated by whitespace, on the same line.

    // cargo-deps: scan-rules="^0.1"
    
    #[macro_use]
    extern crate scan_rules;
    
    fn main() {
        let result = try_readln! {
            (let n: u32, let m: u32) => (n, m)
        };
        match result {
            Ok((n, m)) => println!("I read n={}, m={}", n, m),
            Err(e) => println!("Failed to parse input: {}", e),
        }
    }
    

    Test runs:

    4  5
    I read n=4, m=5
    
    5 a
    Failed to parse input: scan error: syntax error: expected integer, at offset: 2
    

提交回复
热议问题