Skip to content

Rust:read

halmk edited this page Dec 23, 2019 · 5 revisions

入力

Overview

read関数は標準入力から空白をスキップしてトークンを受け取り、T型に変換して返します。

Code

  • read関数
use std::io::*;
use std::str::FromStr;

fn read<T: FromStr>() -> T {
    let stdin = stdin();
    let stdin = stdin.lock();
    let token: String = stdin
        .bytes()
        .map(|c| c.expect("failed to read char") as char) 
        .skip_while(|c| c.is_whitespace())
        .take_while(|c| !c.is_whitespace())
        .collect();
    token.parse().ok().expect("failed to parse token")
}
  • 2次元配列の入力
fn main() {
    let n:u32 = read();
    let m:u32 = read();

    let mut x:Vec<Vec<i32>> = Vec::new();
    x.resize(n as usize, Vec::new());
    for i in 0..n {
        let i = i as usize;
        x[i] = (0..m).map(|_| read()).collect();
    }
}
  • 複数の型を持つベクター型の入力
let n:usize = read();
let mut v:Vec<(String, u32, u32)> = (0..n).map(|i| (read(), read(), i as u32)).collect();

Detail

Clone this wiki locally