8
7

More than 1 year has passed since last update.

Rust入門者必見!標準入出力の全てをこの記事で解説

Last updated at Posted at 2023-08-20

目的

  • 競技プログラミングでの問題解決の効率が良くなること
  • ECサイトなどでの複雑な入力方法に対処できるようになること

1行で1個の文字列の場合

文字列を1行から読み取り、そのまま出力するシンプルな例です。


入力:hello
出力:hello

use std::io::stdin;
fn main(){
    let a = input();
    println!("{}",a);
}
fn input()->String{
    let mut a = String::new();
    stdin().read_line(&mut a).unwrap();
    return a.trim().parse().unwrap();
}

1行で1個の数字の場合

1行から数字を読み取り、3倍して出力します。


入力:3
出力:9

use std::io::stdin;
fn main(){
    let a = input();
    println!("{}",a*3);//三倍
}
fn input()->isize{
    let mut a = String::new();
    stdin().read_line(&mut a).unwrap();
    return a.trim().parse().unwrap();
}

1行でN個の文字列を空白で区切って配列にする場合

1行から複数の文字列を読み取り、配列に変換します。


入力:a b c d
出力:["a", "b", "c", "d"]

use std::io::stdin;
fn main(){
    let a = input();
    println!("{:?}",a);
}
fn input()->Vec<String>{
    let mut a = String::new();
    stdin().read_line(&mut a).unwrap();
    return a.trim().split_whitespace().map(|e| e.parse().ok().unwrap()).collect();
}

1行でN個の数字を空白で区切って配列にする場合

1行から複数の数字を読み取り、それぞれ3倍して配列に変換します。


入力:1 2 3 4
出力:[3,6,9,12]

use std::io::stdin;
fn main(){
    let mut a = input();
    a  = a.iter().map(|x| x*3).collect();//三倍
    println!("{:?}",a);
}
fn input()->Vec<usize>{
    let mut a = String::new();
    stdin().read_line(&mut a).unwrap();
    return a.trim().split_whitespace().map(|e| e.parse().ok().unwrap()).collect();
}

N行でN個の文字列を空白で区切って配列にする場合

複数行から複数の文字列を読み取り、二次元配列に変換します。


入力:
おはよう こんにちは こんばんは
Goodmorning Goodafternoon Goodevening
出力:
[["おはよう", "こんにちは", "こんばんは"],
["Goodmorning", "Goodafternoon", "Goodevening"]]

use std::io::stdin;
fn main(){
    let mut vector = Vec::new();
    loop{
        let mut a = input();
        if a.len() == 0  {
            break;
        }
        vector.push(a.clone());        
    }
    println!("{:?}",vector);
}
fn input()->Vec<String>{
    let mut a = String::new();
    stdin().read_line(&mut a).unwrap();
    return a.trim().split_whitespace().map(|e| e.parse().ok().unwrap()).collect();
}

N行でN個の数字を空白で区切って配列にする場合

複数行から複数の数字を読み取り、それぞれ3倍して二次元配列に変換します。


入力:
1 2 3
4 5 6
出力:
[[3, 6, 9],
[12, 15, 18]]

use std::io::stdin;
fn main(){
    let mut vector = Vec::new();
    loop{
        let mut a = input();
        if a.len() == 0  {
            break;
        }
        a = a.iter().map(|e| e*3).collect();
        vector.push(a.clone());
    }
    println!("{:?}",vector);
}
fn input()->Vec<usize>{
    let mut a = String::new();
    stdin().read_line(&mut a).unwrap();
    return a.trim().split_whitespace().map(|e| e.parse().ok().unwrap()).collect();
}
8
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
7